[2026-07-09 12:50:20.217] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 9m, MIS in 18h 9m [2026-07-09 12:50:20.256] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-07-09 12:50:20.274] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/var/lib/docker/overlay2/5ac02f430354be658e0135c16f9c5c73036e99cd70c78352a2f72d6bf47bb2af/merged"}, []}} [2026-07-09 12:50:20.274] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/var/lib/docker/overlay2/5f3fdd9b13261e59b7562aca9831101518237abaa6eb67abe9e41e0b402f7004/merged"}, []}} [2026-07-09 12:50:20.275] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-07-09 12:50:21.858] [INFO ] Terminal Event Listener started and listening to events [2026-07-09 12:50:21.860] [INFO ] Rule Validation Worker started - will run every hour [2026-07-09 12:50:21.861] [INFO ] Building initial filter cache... [2026-07-09 12:50:21.878] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.0ms idle=954.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-07-09 12:50:21.890] [DEBUG] QUERY OK source="filter_usage" db=0.9ms queue=1.5ms idle=125.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-07-09 12:50:21.890] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-09 12:50:21.984] [INFO ] Device phoenix_client_piyush connected [2026-07-09 12:50:22.004] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4059 (http) [2026-07-09 12:50:22.023] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4059 [2026-07-09 12:50:23.121] [DEBUG] Tzdata polling for update. [2026-07-09 12:50:23.984] [INFO ] tzdata release in place is from a file last modified Thu, 23 Apr 2026 11:51:51 GMT. Release file on server was last modified Wed, 08 Jul 2026 18:02:48 GMT. [2026-07-09 12:50:23.995] [DEBUG] Tzdata downloading new data from https://data.iana.org/time-zones/tzdata-latest.tar.gz [2026-07-09 12:50:24.108] [DEBUG] Tzdata data downloaded. Release version 2026c. [2026-07-09 12:50:25.044] [INFO ] Tzdata has updated the release from 2026b to 2026c [2026-07-09 12:50:25.044] [DEBUG] Tzdata deleting ETS table for version 2026b [2026-07-09 12:50:25.047] [DEBUG] Tzdata deleting ETS table file for version 2026b [2026-07-09 12:50:25.825] [INFO ] GET / [2026-07-09 12:50:25.897] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-09 12:50:26.177] [INFO ] Sent 200 in 352ms [2026-07-09 12:50:29.102] [INFO ] GET /images/favicon.png [2026-07-09 12:50:29.194] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Piyush/prverification/TMS_UAT/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/Piyush/prverification/TMS_UAT/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-07-09 12:50:34.007] [INFO ] GET / [2026-07-09 12:50:34.007] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-09 12:50:34.007] [INFO ] Sent 200 in 710µs [2026-07-09 12:50:36.896] [INFO ] GET / [2026-07-09 12:50:36.897] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-09 12:50:36.927] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=2.7ms idle=1181.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)) [<<160, 123, 41, 33, 4, 251, 176, 22, 67, 111, 50, 101, 242, 25, 246, 123, 127, 138, 217, 124, 29, 135, 69, 148, 229, 241, 241, 74, 104, 77, 235, 106>>, "session", ~U[2026-07-09 12:50:36.907507Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 12:50:36.934] [INFO ] Sent 200 in 37ms [2026-07-09 12:50:45.846] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:50:45.846] [INFO ] Incoming JSON payload: {"oid":"69dbb0be-c670-478c-9374-738134f913cc","sn":"98251226730001","uploadTime":"2026-07-09T20:53:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"ram_free_mb","value":"894","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:53:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:53: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.reso (truncated) [2026-07-09 12:50:45.847] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "69dbb0be-c670-478c-9374-738134f913cc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:53:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:53:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:53:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:53:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "894"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:53:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:53:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:53:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:53: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-07-09T20:53:54Z", "vendor" => "morefun"} [2026-07-09 12:50:45.847] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:50:45.867] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:50:45.867] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:50:45.878] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms queue=1.6ms idle=872.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-07-09 12:50:45.881] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=1.9ms idle=71.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-07-09 12:50:45.881] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:50:45.905] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:50:45.943] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms queue=0.5ms idle=39.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-07-09 12:50:45], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-07-09 12:50:45.949] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:50:45.949] [INFO ] Event published: terminal_updated [2026-07-09 12:50:45.950] [DEBUG] Processing terminal event: terminal_updated [2026-07-09 12:50:45.950] [INFO ] Processing terminal_updated event for terminal 33 [2026-07-09 12:50:45.950] [INFO ] Changed fields: [:vendor, :model] [2026-07-09 12:50:45.970] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms queue=2.0ms idle=61.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-07-09 12:50:45], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-07-09 12:50:45.973] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=2.6ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-07-09 12:50:45.989] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=0.4ms idle=14.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-07-09 12:50:45.989] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-07-09 12:50:45.997] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms queue=2.4ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, ~N[2026-07-09 12:50:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:50:46.005] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:50:46.008] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=10.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:697 [2026-07-09 12:50:46.072] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=40.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:50:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:50:46.112] [DEBUG] QUERY OK db=13.1ms queue=1.3ms idle=89.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "69dbb0be-c670-478c-9374-738134f913cc", "2026-07-09T20:53:54Z", ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:50:46.126] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46723, oid: "69dbb0be-c670-478c-9374-738134f913cc", upload_time: "2026-07-09T20:53:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]} [2026-07-09 12:50:46.126] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:53:54Z", "value" => "morefun"} [2026-07-09 12:50:46.151] [DEBUG] QUERY OK db=22.4ms queue=2.1ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "morefun", "vendor", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399773, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.152] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:53:54Z", "value" => "kiosk_launcher"} [2026-07-09 12:50:46.185] [DEBUG] QUERY OK db=32.0ms queue=1.5ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "kiosk_launcher", "model", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399774, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.186] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:53:54Z", "value" => "1.0"} [2026-07-09 12:50:46.210] [DEBUG] QUERY OK db=23.6ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "1.0", "app_version", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399775, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.211] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:53:54Z", "value" => "13"} [2026-07-09 12:50:46.226] [DEBUG] QUERY OK db=15.1ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "13", "android_version", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399776, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.226] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "894"} [2026-07-09 12:50:46.241] [DEBUG] QUERY OK db=14.4ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "894", "ram_free_mb", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399777, itemkey: "ram_free_mb", value: "894", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.242] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:53:54Z", "value" => "WIFI"} [2026-07-09 12:50:46.266] [DEBUG] QUERY OK db=23.3ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "WIFI", "network_type", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399778, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.266] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:53:54Z", "value" => "true"} [2026-07-09 12:50:46.291] [DEBUG] QUERY OK db=24.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "true", "kiosk_active", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399779, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.291] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:53:54Z", "value" => ""} [2026-07-09 12:50:46.319] [DEBUG] QUERY OK db=27.0ms queue=0.4ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:53:54Z", "sim_operator", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399780, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.319] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.333] [DEBUG] QUERY OK db=12.9ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "UNKNOWN", "sim_number", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399781, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.333] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.348] [DEBUG] QUERY OK db=14.6ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "UNKNOWN", "sim_iccid", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399782, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.382] [DEBUG] QUERY OK db=33.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "UNKNOWN", "sim_imsi", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399783, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.382] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.412] [DEBUG] QUERY OK db=29.6ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "UNKNOWN", "sim_iccid2", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399784, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.413] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:53:54Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.429] [DEBUG] QUERY OK db=15.8ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "UNKNOWN", "sim_imsi2", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399785, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.429] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "10"} [2026-07-09 12:50:46.476] [DEBUG] QUERY OK db=46.5ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "10", "data_usage_mb", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399786, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.477] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:53:54Z", "value" => "0"} [2026-07-09 12:50:46.521] [DEBUG] QUERY OK db=43.6ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53:54Z", "0", "mobile_data_mb", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399787, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.523] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:53: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-07-09 12:50:46.583] [DEBUG] QUERY OK db=58.4ms queue=0.1ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:53: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", 46723, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399788, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:53:54Z", message: nil, status_log_id: 46723, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.585] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:50:46.585] [INFO ] Incoming JSON payload: {"oid":"266ab782-35fb-408e-a7b7-349e393d4ce7","sn":"98250904730001","uploadTime":"2026-07-09T12:50:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:50:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:50: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:50:46.586] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "266ab782-35fb-408e-a7b7-349e393d4ce7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:50:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:50:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:50:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:50:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:50:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:50:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:50:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:50: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:50:45Z", "vendor" => "morefun"} [2026-07-09 12:50:46.587] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:50:46.587] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:50:46.587] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:50:46.589] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms 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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 12:50:46.590] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=6.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-07-09 12:50:46.590] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:50:46.592] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:50:46.592] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:50:46.657] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms queue=40.7ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:50:46], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:50:46.657] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:50:46.659] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:50:46.688] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:50:46], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:50:46.707] [DEBUG] QUERY OK db=17.8ms queue=0.8ms idle=29.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "266ab782-35fb-408e-a7b7-349e393d4ce7", "2026-07-09T12:50:45Z", ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:50:46.707] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46724, oid: "266ab782-35fb-408e-a7b7-349e393d4ce7", upload_time: "2026-07-09T12:50:45Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]} [2026-07-09 12:50:46.708] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:50:45Z", "value" => "morefun"} [2026-07-09 12:50:46.727] [DEBUG] QUERY OK db=18.7ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "morefun", "vendor", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399789, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.727] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:50:45Z", "value" => "kiosk_launcher"} [2026-07-09 12:50:46.745] [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-07-09T12:50:45Z", "kiosk_launcher", "model", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399790, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.746] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:50:45Z", "value" => "1.0"} [2026-07-09 12:50:46.779] [DEBUG] QUERY OK db=31.9ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "1.0", "app_version", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399791, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.780] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:50:45Z", "value" => "13"} [2026-07-09 12:50:46.803] [DEBUG] QUERY OK db=23.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "13", "android_version", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399792, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.804] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "1082"} [2026-07-09 12:50:46.822] [DEBUG] QUERY OK db=18.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "1082", "ram_free_mb", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399793, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.823] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:50:45Z", "value" => "WIFI"} [2026-07-09 12:50:46.837] [DEBUG] QUERY OK db=12.8ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "WIFI", "network_type", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399794, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.837] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:50:45Z", "value" => "true"} [2026-07-09 12:50:46.850] [DEBUG] QUERY OK db=12.8ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "true", "kiosk_active", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399795, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.851] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:50:45Z", "value" => ""} [2026-07-09 12:50:46.883] [DEBUG] QUERY OK db=29.2ms queue=2.6ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:50:45Z", "sim_operator", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399796, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.886] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.918] [DEBUG] QUERY OK db=31.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "UNKNOWN", "sim_number", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399797, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.919] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.933] [DEBUG] QUERY OK db=13.9ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "UNKNOWN", "sim_iccid", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399798, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.934] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.948] [DEBUG] QUERY OK db=12.8ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "UNKNOWN", "sim_imsi", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399799, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.948] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"} [2026-07-09 12:50:46.974] [DEBUG] QUERY OK db=25.3ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "UNKNOWN", "sim_iccid2", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:46.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399800, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:46.974] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:50:45Z", "value" => "UNKNOWN"} [2026-07-09 12:50:47.008] [DEBUG] QUERY OK db=33.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "UNKNOWN", "sim_imsi2", 46724, ~N[2026-07-09 12:50:46], ~N[2026-07-09 12:50:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:47.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399801, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:46], updated_at: ~N[2026-07-09 12:50:46]}} [2026-07-09 12:50:47.013] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "26"} [2026-07-09 12:50:47.035] [DEBUG] QUERY OK db=22.3ms queue=0.1ms idle=4.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "26", "data_usage_mb", 46724, ~N[2026-07-09 12:50:47], ~N[2026-07-09 12:50:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:47.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399802, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:47], updated_at: ~N[2026-07-09 12:50:47]}} [2026-07-09 12:50:47.036] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:50:45Z", "value" => "0"} [2026-07-09 12:50:47.051] [DEBUG] QUERY OK db=14.2ms queue=0.9ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50:45Z", "0", "mobile_data_mb", 46724, ~N[2026-07-09 12:50:47], ~N[2026-07-09 12:50:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:47.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399803, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:47], updated_at: ~N[2026-07-09 12:50:47]}} [2026-07-09 12:50:47.057] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:50: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:50:47.088] [DEBUG] QUERY OK db=27.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:50: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46724, ~N[2026-07-09 12:50:47], ~N[2026-07-09 12:50:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:50:47.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399804, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:50:45Z", message: nil, status_log_id: 46724, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:50:47], updated_at: ~N[2026-07-09 12:50:47]}} [2026-07-09 12:50:49.326] [INFO ] GET /images/favicon.png [2026-07-09 12:50:49.346] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Piyush/prverification/TMS_UAT/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/Piyush/prverification/TMS_UAT/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-07-09 12:51:16.182] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:51:16.182] [INFO ] Incoming JSON payload: {"oid":"99722d58-72e3-4309-8cd3-8ae3824f40d4","sn":"98250904730001","uploadTime":"2026-07-09T12:51:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:51:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:51:16.184] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "99722d58-72e3-4309-8cd3-8ae3824f40d4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:51:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:51:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:51:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:51:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:51:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:51:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:51:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:51:15Z", "vendor" => "morefun"} [2026-07-09 12:51:16.184] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:51:16.184] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:51:16.184] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:51:16.186] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1036.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-07-09 12:51:16.187] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=33.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-07-09 12:51:16.187] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:51:16.188] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:51:16.189] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:51:16.219] [DEBUG] QUERY OK source="tms_terminals" db=29.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:51:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:51:16.219] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:51:16.224] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:51:16.244] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:51:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:51:16.272] [DEBUG] QUERY OK db=27.9ms queue=0.1ms idle=19.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "99722d58-72e3-4309-8cd3-8ae3824f40d4", "2026-07-09T12:51:15Z", ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:51:16.272] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46725, oid: "99722d58-72e3-4309-8cd3-8ae3824f40d4", upload_time: "2026-07-09T12:51:15Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]} [2026-07-09 12:51:16.272] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:51:15Z", "value" => "morefun"} [2026-07-09 12:51:16.308] [DEBUG] QUERY OK db=35.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "morefun", "vendor", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399805, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.309] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:51:15Z", "value" => "kiosk_launcher"} [2026-07-09 12:51:16.332] [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-07-09T12:51:15Z", "kiosk_launcher", "model", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399806, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.333] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:51:15Z", "value" => "1.0"} [2026-07-09 12:51:16.359] [DEBUG] QUERY OK db=25.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "1.0", "app_version", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399807, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.359] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:51:15Z", "value" => "13"} [2026-07-09 12:51:16.378] [DEBUG] QUERY OK db=18.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "13", "android_version", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399808, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.378] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "1080"} [2026-07-09 12:51:16.410] [DEBUG] QUERY OK db=31.9ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "1080", "ram_free_mb", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399809, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.411] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:51:15Z", "value" => "WIFI"} [2026-07-09 12:51:16.435] [DEBUG] QUERY OK db=22.9ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "WIFI", "network_type", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399810, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.436] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:51:15Z", "value" => "true"} [2026-07-09 12:51:16.472] [DEBUG] QUERY OK db=34.6ms queue=0.8ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "true", "kiosk_active", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399811, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.473] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:51:15Z", "value" => ""} [2026-07-09 12:51:16.643] [DEBUG] QUERY OK db=169.1ms queue=0.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:51:15Z", "sim_operator", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399812, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.643] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"} [2026-07-09 12:51:16.669] [DEBUG] QUERY OK db=26.0ms idle=170.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "UNKNOWN", "sim_number", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399813, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.670] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"} [2026-07-09 12:51:16.692] [DEBUG] QUERY OK db=22.1ms queue=0.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "UNKNOWN", "sim_iccid", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399814, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.693] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"} [2026-07-09 12:51:16.716] [DEBUG] QUERY OK db=23.1ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "UNKNOWN", "sim_imsi", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399815, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.716] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"} [2026-07-09 12:51:16.744] [DEBUG] QUERY OK db=26.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "UNKNOWN", "sim_iccid2", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399816, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.744] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:51:15Z", "value" => "UNKNOWN"} [2026-07-09 12:51:16.777] [DEBUG] QUERY OK db=32.5ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "UNKNOWN", "sim_imsi2", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399817, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.778] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "26"} [2026-07-09 12:51:16.796] [DEBUG] QUERY OK db=17.7ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "26", "data_usage_mb", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399818, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.796] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:51:15Z", "value" => "0"} [2026-07-09 12:51:16.821] [DEBUG] QUERY OK db=24.1ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:15Z", "0", "mobile_data_mb", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399819, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.822] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:51:16.855] [DEBUG] QUERY OK db=31.9ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46725, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:16.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399820, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:51:15Z", message: nil, status_log_id: 46725, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:16.856] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:51:16.856] [INFO ] Incoming JSON payload: {"oid":"e1f48145-0631-4bc1-a6c9-90b24199fb57","sn":"98251226730001","uploadTime":"2026-07-09T20:54:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:54:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:54: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:51:16.858] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e1f48145-0631-4bc1-a6c9-90b24199fb57", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:54:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:54:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:54:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:54:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:54:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:54:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:54:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:54: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T20:54:24Z", "vendor" => "morefun"} [2026-07-09 12:51:16.858] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:51:16.858] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:51:16.858] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:51:16.859] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms 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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 12:51:16.859] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms 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-07-09 12:51:16.859] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:51:16.860] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:51:16.860] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:51:16.891] [DEBUG] QUERY OK source="tms_terminals" db=30.1ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:51:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:51:16.891] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:51:16.892] [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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:51:16.932] [DEBUG] QUERY OK source="tms_terminals" db=38.9ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:51:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:51:16.968] [DEBUG] QUERY OK db=35.5ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e1f48145-0631-4bc1-a6c9-90b24199fb57", "2026-07-09T20:54:24Z", ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:51:16.969] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46726, oid: "e1f48145-0631-4bc1-a6c9-90b24199fb57", upload_time: "2026-07-09T20:54:24Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]} [2026-07-09 12:51:16.969] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:54:24Z", "value" => "morefun"} [2026-07-09 12:51:17.003] [DEBUG] QUERY OK db=33.2ms queue=0.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "morefun", "vendor", 46726, ~N[2026-07-09 12:51:16], ~N[2026-07-09 12:51:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399821, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:16], updated_at: ~N[2026-07-09 12:51:16]}} [2026-07-09 12:51:17.003] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:54:24Z", "value" => "kiosk_launcher"} [2026-07-09 12:51:17.026] [DEBUG] QUERY OK db=22.1ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "kiosk_launcher", "model", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399822, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.027] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:54:24Z", "value" => "1.0"} [2026-07-09 12:51:17.044] [DEBUG] QUERY OK db=16.8ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "1.0", "app_version", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399823, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.044] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:54:24Z", "value" => "13"} [2026-07-09 12:51:17.078] [DEBUG] QUERY OK db=33.0ms queue=0.2ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "13", "android_version", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399824, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.078] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "889"} [2026-07-09 12:51:17.103] [DEBUG] QUERY OK db=24.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "889", "ram_free_mb", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399825, itemkey: "ram_free_mb", value: "889", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.103] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:54:24Z", "value" => "WIFI"} [2026-07-09 12:51:17.136] [DEBUG] QUERY OK db=32.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "WIFI", "network_type", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399826, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.136] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:54:24Z", "value" => "true"} [2026-07-09 12:51:17.160] [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-07-09T20:54:24Z", "true", "kiosk_active", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399827, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.161] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:54:24Z", "value" => ""} [2026-07-09 12:51:17.194] [DEBUG] QUERY OK db=33.3ms queue=0.1ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:54:24Z", "sim_operator", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399828, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.195] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"} [2026-07-09 12:51:17.218] [DEBUG] QUERY OK db=22.7ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "UNKNOWN", "sim_number", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399829, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.219] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"} [2026-07-09 12:51:17.241] [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-07-09T20:54:24Z", "UNKNOWN", "sim_iccid", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399830, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.242] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"} [2026-07-09 12:51:17.263] [DEBUG] QUERY OK db=20.0ms queue=0.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "UNKNOWN", "sim_imsi", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399831, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.264] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"} [2026-07-09 12:51:17.291] [DEBUG] QUERY OK db=26.9ms queue=0.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "UNKNOWN", "sim_iccid2", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399832, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.292] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:54:24Z", "value" => "UNKNOWN"} [2026-07-09 12:51:17.326] [DEBUG] QUERY OK db=32.3ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "UNKNOWN", "sim_imsi2", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399833, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.326] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "10"} [2026-07-09 12:51:17.350] [DEBUG] QUERY OK db=22.9ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "10", "data_usage_mb", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399834, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.350] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:54:24Z", "value" => "0"} [2026-07-09 12:51:17.373] [DEBUG] QUERY OK db=22.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:24Z", "0", "mobile_data_mb", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399835, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:17.375] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:54: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:51:17.399] [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-07-09T20:54: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46726, ~N[2026-07-09 12:51:17], ~N[2026-07-09 12:51:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:17.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399836, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:54:24Z", message: nil, status_log_id: 46726, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:17], updated_at: ~N[2026-07-09 12:51:17]}} [2026-07-09 12:51:19.756] [INFO ] GET / [2026-07-09 12:51:19.757] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-09 12:51:19.758] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.1ms idle=1016.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)) [<<160, 123, 41, 33, 4, 251, 176, 22, 67, 111, 50, 101, 242, 25, 246, 123, 127, 138, 217, 124, 29, 135, 69, 148, 229, 241, 241, 74, 104, 77, 235, 106>>, "session", ~U[2026-07-09 12:51:19.757253Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 12:51:19.758] [INFO ] Sent 200 in 1ms [2026-07-09 12:51:46.154] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:51:46.154] [INFO ] Incoming JSON payload: {"oid":"02f5f406-8658-46b8-a7a1-138de53a21d5","sn":"98251226730001","uploadTime":"2026-07-09T20:54:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:54:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:51:46.155] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "02f5f406-8658-46b8-a7a1-138de53a21d5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:54:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:54:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:54:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:54:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:54:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:54:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:54:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T20:54:54Z", "vendor" => "morefun"} [2026-07-09 12:51:46.155] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:51:46.155] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:51:46.155] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:51:46.156] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=905.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-07-09 12:51:46.157] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=340.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-07-09 12:51:46.157] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:51:46.159] [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-07-09 12:51:46.159] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:51:46.183] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:51:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:51:46.183] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:51:46.184] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=24.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:697 [2026-07-09 12:51:46.219] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:51:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:51:46.241] [DEBUG] QUERY OK db=22.4ms idle=35.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "02f5f406-8658-46b8-a7a1-138de53a21d5", "2026-07-09T20:54:54Z", ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:51:46.242] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46727, oid: "02f5f406-8658-46b8-a7a1-138de53a21d5", upload_time: "2026-07-09T20:54:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]} [2026-07-09 12:51:46.242] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:54:54Z", "value" => "morefun"} [2026-07-09 12:51:46.259] [DEBUG] QUERY OK db=16.7ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "morefun", "vendor", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399837, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.260] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:54:54Z", "value" => "kiosk_launcher"} [2026-07-09 12:51:46.275] [DEBUG] QUERY OK db=15.5ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "kiosk_launcher", "model", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399838, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.276] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:54:54Z", "value" => "1.0"} [2026-07-09 12:51:46.304] [DEBUG] QUERY OK db=27.6ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "1.0", "app_version", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399839, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.304] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:54:54Z", "value" => "13"} [2026-07-09 12:51:46.338] [DEBUG] QUERY OK db=33.2ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "13", "android_version", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399840, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.339] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "900"} [2026-07-09 12:51:46.362] [DEBUG] QUERY OK db=22.7ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "900", "ram_free_mb", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399841, itemkey: "ram_free_mb", value: "900", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.363] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:54:54Z", "value" => "WIFI"} [2026-07-09 12:51:46.378] [DEBUG] QUERY OK db=15.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "WIFI", "network_type", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399842, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.379] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:54:54Z", "value" => "true"} [2026-07-09 12:51:46.407] [DEBUG] QUERY OK db=27.3ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "true", "kiosk_active", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399843, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.407] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:54:54Z", "value" => ""} [2026-07-09 12:51:46.432] [DEBUG] QUERY OK db=24.6ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:54:54Z", "sim_operator", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399844, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.433] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"} [2026-07-09 12:51:46.479] [DEBUG] QUERY OK db=46.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "UNKNOWN", "sim_number", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399845, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.480] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"} [2026-07-09 12:51:46.498] [DEBUG] QUERY OK db=18.5ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "UNKNOWN", "sim_iccid", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399846, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.499] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"} [2026-07-09 12:51:46.524] [DEBUG] QUERY OK db=24.9ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "UNKNOWN", "sim_imsi", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399847, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.525] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"} [2026-07-09 12:51:46.549] [DEBUG] QUERY OK db=23.5ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "UNKNOWN", "sim_iccid2", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399848, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.549] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:54:54Z", "value" => "UNKNOWN"} [2026-07-09 12:51:46.584] [DEBUG] QUERY OK db=33.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "UNKNOWN", "sim_imsi2", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399849, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.584] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "10"} [2026-07-09 12:51:46.613] [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-07-09T20:54:54Z", "10", "data_usage_mb", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399850, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.614] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:54:54Z", "value" => "0"} [2026-07-09 12:51:46.641] [DEBUG] QUERY OK db=26.4ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:54:54Z", "0", "mobile_data_mb", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399851, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.643] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:51:46.678] [DEBUG] QUERY OK db=33.7ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46727, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399852, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:54:54Z", message: nil, status_log_id: 46727, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.679] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:51:46.679] [INFO ] Incoming JSON payload: {"oid":"96ce8d68-7e0b-4571-82ad-06bdcac4949d","sn":"98250904730001","uploadTime":"2026-07-09T12:51:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:51:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:51:46.682] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "96ce8d68-7e0b-4571-82ad-06bdcac4949d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:51:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:51:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:51:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:51:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:51:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:51:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:51:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:51:45Z", "vendor" => "morefun"} [2026-07-09 12:51:46.682] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:51:46.682] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:51:46.683] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:51:46.684] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=41.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-07-09 12:51:46.685] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 12:51:46.685] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:51:46.686] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:51:46.687] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:51:46.714] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms queue=0.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:51:46], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:51:46.714] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:51:46.715] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms 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 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:51:46.737] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:51:46], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:51:46.760] [DEBUG] QUERY OK db=21.2ms idle=22.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "96ce8d68-7e0b-4571-82ad-06bdcac4949d", "2026-07-09T12:51:45Z", ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:51:46.760] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46728, oid: "96ce8d68-7e0b-4571-82ad-06bdcac4949d", upload_time: "2026-07-09T12:51:45Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]} [2026-07-09 12:51:46.760] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:51:45Z", "value" => "morefun"} [2026-07-09 12:51:46.787] [DEBUG] QUERY OK db=26.7ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "morefun", "vendor", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399853, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.788] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:51:45Z", "value" => "kiosk_launcher"} [2026-07-09 12:51:46.821] [DEBUG] QUERY OK db=32.7ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "kiosk_launcher", "model", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399854, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.821] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:51:45Z", "value" => "1.0"} [2026-07-09 12:51:46.844] [DEBUG] QUERY OK db=22.8ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "1.0", "app_version", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399855, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.845] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:51:45Z", "value" => "13"} [2026-07-09 12:51:46.865] [DEBUG] QUERY OK db=20.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "13", "android_version", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399856, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.866] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "1080"} [2026-07-09 12:51:46.903] [DEBUG] QUERY OK db=36.0ms queue=0.2ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "1080", "ram_free_mb", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399857, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.903] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:51:45Z", "value" => "WIFI"} [2026-07-09 12:51:46.937] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "WIFI", "network_type", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399858, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.938] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:51:45Z", "value" => "true"} [2026-07-09 12:51:46.963] [DEBUG] QUERY OK db=24.7ms queue=0.2ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "true", "kiosk_active", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399859, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.963] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:51:45Z", "value" => ""} [2026-07-09 12:51:46.984] [DEBUG] QUERY OK db=20.7ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:51:45Z", "sim_operator", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:46.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399860, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:46.985] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"} [2026-07-09 12:51:47.013] [DEBUG] QUERY OK db=27.7ms queue=0.1ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "UNKNOWN", "sim_number", 46728, ~N[2026-07-09 12:51:46], ~N[2026-07-09 12:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399861, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:46], updated_at: ~N[2026-07-09 12:51:46]}} [2026-07-09 12:51:47.014] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"} [2026-07-09 12:51:47.049] [DEBUG] QUERY OK db=34.2ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "UNKNOWN", "sim_iccid", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399862, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.049] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"} [2026-07-09 12:51:47.076] [DEBUG] QUERY OK db=26.8ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "UNKNOWN", "sim_imsi", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399863, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.077] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"} [2026-07-09 12:51:47.100] [DEBUG] QUERY OK db=22.4ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "UNKNOWN", "sim_iccid2", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399864, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.101] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:51:45Z", "value" => "UNKNOWN"} [2026-07-09 12:51:47.132] [DEBUG] QUERY OK db=30.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "UNKNOWN", "sim_imsi2", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399865, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.132] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "26"} [2026-07-09 12:51:47.157] [DEBUG] QUERY OK db=24.6ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "26", "data_usage_mb", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399866, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.158] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:51:45Z", "value" => "0"} [2026-07-09 12:51:47.193] [DEBUG] QUERY OK db=34.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51:45Z", "0", "mobile_data_mb", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399867, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:47.195] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:51:47.214] [DEBUG] QUERY OK db=17.1ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:51: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46728, ~N[2026-07-09 12:51:47], ~N[2026-07-09 12:51:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:51:47.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399868, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:51:45Z", message: nil, status_log_id: 46728, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:51:47], updated_at: ~N[2026-07-09 12:51:47]}} [2026-07-09 12:51:48.458] [INFO ] POST /users/log_out [2026-07-09 12:51:48.458] [DEBUG] Processing with PlatformWeb.UserSessionController.delete/2 Parameters: %{"_csrf_token" => "QUcZDT8fWlAzYSElMSgLDAMEJiwEMDNm13Jaie7ai7wOux2bekbfvEU_", "_method" => "delete"} Pipelines: [:browser] [2026-07-09 12:51:48.463] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=2.7ms idle=718.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)) [<<160, 123, 41, 33, 4, 251, 176, 22, 67, 111, 50, 101, 242, 25, 246, 123, 127, 138, 217, 124, 29, 135, 69, 148, 229, 241, 241, 74, 104, 77, 235, 106>>, "session", ~U[2026-07-09 12:51:48.459252Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 12:51:48.505] [DEBUG] QUERY OK source="users_tokens" db=35.5ms queue=0.9ms idle=728.1ms DELETE u0.* FROM `users_tokens` AS u0 WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) [<<160, 123, 41, 33, 4, 251, 176, 22, 67, 111, 50, 101, 242, 25, 246, 123, 127, 138, 217, 124, 29, 135, 69, 148, 229, 241, 241, 74, 104, 77, 235, 106>>, "session"] ↳ DaProductApp.Users.delete_user_session_token/1, at: lib/da_product_app/users.ex:328 [2026-07-09 12:51:48.512] [INFO ] Sent 302 in 53ms [2026-07-09 12:51:48.885] [INFO ] GET / [2026-07-09 12:51:48.886] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-09 12:51:48.898] [INFO ] Sent 200 in 12ms [2026-07-09 12:52:16.245] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:52:16.245] [INFO ] Incoming JSON payload: {"oid":"4d23695e-2579-4ea0-927e-1bf99c8ab0a8","sn":"98251226730001","uploadTime":"2026-07-09T20:55:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:55:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:55: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:52:16.246] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4d23695e-2579-4ea0-927e-1bf99c8ab0a8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:55:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:55:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:55:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:55:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:55:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:55:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:55:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:55: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T20:55:24Z", "vendor" => "morefun"} [2026-07-09 12:52:16.246] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:52:16.246] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:52:16.246] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:52:16.248] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=1426.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-07-09 12:52:16.249] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=862.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-07-09 12:52:16.249] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:52:16.251] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:52:16.252] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:52:16.278] [DEBUG] QUERY OK source="tms_terminals" db=26.1ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:52:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:16.279] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:52:16.280] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:16.297] [DEBUG] QUERY OK source="tms_terminals" db=16.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:16.316] [DEBUG] QUERY OK db=18.8ms idle=16.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4d23695e-2579-4ea0-927e-1bf99c8ab0a8", "2026-07-09T20:55:24Z", ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:16.316] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46729, oid: "4d23695e-2579-4ea0-927e-1bf99c8ab0a8", upload_time: "2026-07-09T20:55:24Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]} [2026-07-09 12:52:16.317] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:55:24Z", "value" => "morefun"} [2026-07-09 12:52:16.340] [DEBUG] QUERY OK db=22.8ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "morefun", "vendor", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399869, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.341] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:55:24Z", "value" => "kiosk_launcher"} [2026-07-09 12:52:16.376] [DEBUG] QUERY OK db=34.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "kiosk_launcher", "model", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399870, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.376] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:55:24Z", "value" => "1.0"} [2026-07-09 12:52:16.399] [DEBUG] QUERY OK db=22.3ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "1.0", "app_version", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399871, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.399] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:55:24Z", "value" => "13"} [2026-07-09 12:52:16.411] [DEBUG] QUERY OK db=10.7ms queue=0.1ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "13", "android_version", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399872, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.411] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "895"} [2026-07-09 12:52:16.426] [DEBUG] QUERY OK db=14.4ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "895", "ram_free_mb", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399873, itemkey: "ram_free_mb", value: "895", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.426] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:55:24Z", "value" => "WIFI"} [2026-07-09 12:52:16.451] [DEBUG] QUERY OK db=24.6ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "WIFI", "network_type", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399874, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.452] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:55:24Z", "value" => "true"} [2026-07-09 12:52:16.501] [DEBUG] QUERY OK db=48.3ms queue=0.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "true", "kiosk_active", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399875, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.501] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:55:24Z", "value" => ""} [2026-07-09 12:52:16.589] [DEBUG] QUERY OK db=86.7ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:55:24Z", "sim_operator", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399876, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.589] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"} [2026-07-09 12:52:16.614] [DEBUG] QUERY OK db=25.0ms queue=0.1ms idle=88.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "UNKNOWN", "sim_number", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399877, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.615] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"} [2026-07-09 12:52:16.649] [DEBUG] QUERY OK db=33.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "UNKNOWN", "sim_iccid", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399878, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.649] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"} [2026-07-09 12:52:16.673] [DEBUG] QUERY OK db=23.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "UNKNOWN", "sim_imsi", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399879, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"} [2026-07-09 12:52:16.698] [DEBUG] QUERY OK db=24.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "UNKNOWN", "sim_iccid2", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399880, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.698] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:55:24Z", "value" => "UNKNOWN"} [2026-07-09 12:52:16.722] [DEBUG] QUERY OK db=22.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "UNKNOWN", "sim_imsi2", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399881, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.722] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "10"} [2026-07-09 12:52:16.745] [DEBUG] QUERY OK db=23.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:24Z", "10", "data_usage_mb", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399882, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.746] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:55:24Z", "value" => "0"} [2026-07-09 12:52:16.775] [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-07-09T20:55:24Z", "0", "mobile_data_mb", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399883, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.776] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:55: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:52:16.810] [DEBUG] QUERY OK db=33.7ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46729, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399884, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:55:24Z", message: nil, status_log_id: 46729, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.811] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:52:16.811] [INFO ] Incoming JSON payload: {"oid":"e7231bdf-da7a-47ba-a003-e9935a2ff180","sn":"98250904730001","uploadTime":"2026-07-09T12:52:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"ram_free_mb","value":"1078","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:52:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:52:16.814] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e7231bdf-da7a-47ba-a003-e9935a2ff180", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:52:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:52:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:52:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:52:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "1078"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:52:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:52:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:52:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:52:16Z", "vendor" => "morefun"} [2026-07-09 12:52:16.814] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:52:16.814] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:52:16.814] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:52:16.816] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=40.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-07-09 12:52:16.817] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=6.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-07-09 12:52:16.817] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:52:16.818] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:52:16.818] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:52:16.838] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:52:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:16.839] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:52:16.840] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:16.872] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:16.895] [DEBUG] QUERY OK db=22.5ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "e7231bdf-da7a-47ba-a003-e9935a2ff180", "2026-07-09T12:52:16Z", ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:16.896] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46730, oid: "e7231bdf-da7a-47ba-a003-e9935a2ff180", upload_time: "2026-07-09T12:52:16Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]} [2026-07-09 12:52:16.896] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:52:16Z", "value" => "morefun"} [2026-07-09 12:52:16.914] [DEBUG] QUERY OK db=17.6ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "morefun", "vendor", 46730, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399885, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.914] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:52:16Z", "value" => "kiosk_launcher"} [2026-07-09 12:52:16.926] [DEBUG] QUERY OK db=11.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-07-09T12:52:16Z", "kiosk_launcher", "model", 46730, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399886, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.927] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:52:16Z", "value" => "1.0"} [2026-07-09 12:52:16.958] [DEBUG] QUERY OK db=30.3ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "1.0", "app_version", 46730, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399887, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.958] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:52:16Z", "value" => "13"} [2026-07-09 12:52:16.982] [DEBUG] QUERY OK db=23.0ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "13", "android_version", 46730, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:16.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399888, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:16.983] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "1078"} [2026-07-09 12:52:17.009] [DEBUG] QUERY OK db=25.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "1078", "ram_free_mb", 46730, ~N[2026-07-09 12:52:16], ~N[2026-07-09 12:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399889, itemkey: "ram_free_mb", value: "1078", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:16], updated_at: ~N[2026-07-09 12:52:16]}} [2026-07-09 12:52:17.009] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:52:16Z", "value" => "WIFI"} [2026-07-09 12:52:17.033] [DEBUG] QUERY OK db=22.3ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "WIFI", "network_type", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399890, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.033] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:52:16Z", "value" => "true"} [2026-07-09 12:52:17.045] [DEBUG] QUERY OK db=11.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "true", "kiosk_active", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399891, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.045] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:52:16Z", "value" => ""} [2026-07-09 12:52:17.080] [DEBUG] QUERY OK db=34.4ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:52:16Z", "sim_operator", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399892, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.080] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"} [2026-07-09 12:52:17.105] [DEBUG] QUERY OK db=23.5ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "UNKNOWN", "sim_number", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399893, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.105] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"} [2026-07-09 12:52:17.135] [DEBUG] QUERY OK db=28.8ms queue=0.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "UNKNOWN", "sim_iccid", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399894, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.135] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"} [2026-07-09 12:52:17.147] [DEBUG] QUERY OK db=11.5ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "UNKNOWN", "sim_imsi", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399895, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.147] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"} [2026-07-09 12:52:17.176] [DEBUG] QUERY OK db=28.3ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "UNKNOWN", "sim_iccid2", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399896, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.177] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:52:16Z", "value" => "UNKNOWN"} [2026-07-09 12:52:17.206] [DEBUG] QUERY OK db=28.8ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "UNKNOWN", "sim_imsi2", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399897, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.206] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "26"} [2026-07-09 12:52:17.239] [DEBUG] QUERY OK db=32.5ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "26", "data_usage_mb", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399898, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.239] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:52:16Z", "value" => "0"} [2026-07-09 12:52:17.252] [DEBUG] QUERY OK db=12.1ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:16Z", "0", "mobile_data_mb", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399899, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:17.254] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:52:17.278] [DEBUG] QUERY OK db=22.8ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46730, ~N[2026-07-09 12:52:17], ~N[2026-07-09 12:52:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:17.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399900, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:52:16Z", message: nil, status_log_id: 46730, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:17], updated_at: ~N[2026-07-09 12:52:17]}} [2026-07-09 12:52:35.291] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-07-09 12:52:45.941] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 12:52:45.941] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"-5548762-08-27T23:05:00Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-5548762-08-27T23:05:00Z","message":"Device Connected"}]} [2026-07-09 12:52:45.941] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5548762-08-27T23:05:00Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "-5548762-08-27T23:05:00Z"} [2026-07-09 12:52:45.941] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:52:45.943] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1120.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:52:45.943] [INFO ] Terminal updated: 61251020798002 [2026-07-09 12:52:45.956] [DEBUG] QUERY OK source="tms_terminals" db=12.9ms idle=481.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:52:45], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:45.957] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=13.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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:45.987] [DEBUG] QUERY OK source="tms_terminals" db=29.2ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:45], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:46.015] [DEBUG] QUERY OK db=25.7ms queue=0.7ms idle=30.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "-5548762-08-27T23:05:00Z", ~N[2026-07-09 12:52:45], ~N[2026-07-09 12:52:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:46.017] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46731, oid: "org-id-placeholder", upload_time: "-5548762-08-27T23:05:00Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:45], updated_at: ~N[2026-07-09 12:52:45]} [2026-07-09 12:52:46.020] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5548762-08-27T23:05:00Z", "value" => "online"} [2026-07-09 12:52:46.041] [DEBUG] QUERY OK db=14.2ms queue=5.8ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-5548762-08-27T23:05:00Z", "online", "status", 46731, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399901, itemkey: "status", value: "online", timestamp: "-5548762-08-27T23:05:00Z", message: "Device Connected", status_log_id: 46731, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.043] [INFO ] Setting terminal 61251020798002 status to 'online' from status itemkey [2026-07-09 12:52:46.062] [DEBUG] QUERY OK source="tms_terminals" db=18.3ms idle=29.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:46], 11] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-09 12:52:46.065] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=23.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:46], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-09 12:52:46.608] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:52:46.608] [INFO ] Incoming JSON payload: {"oid":"528f9f09-3d8c-4fcb-8ff0-3beb8da953f5","sn":"98251226730001","uploadTime":"2026-07-09T20:55:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:55:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:55: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.reso (truncated) [2026-07-09 12:52:46.611] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "528f9f09-3d8c-4fcb-8ff0-3beb8da953f5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:55:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:55:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:55:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:55:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:55:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:55:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:55:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:55: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-07-09T20:55:54Z", "vendor" => "morefun"} [2026-07-09 12:52:46.611] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:52:46.611] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:52:46.611] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:52:46.615] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=2.3ms idle=546.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-07-09 12:52:46.615] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=150.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-07-09 12:52:46.615] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:52:46.616] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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-07-09 12:52:46.617] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:52:46.631] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:52:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:46.631] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:52:46.632] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:46.666] [DEBUG] QUERY OK source="tms_terminals" db=32.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:46.688] [DEBUG] QUERY OK db=21.8ms queue=0.1ms idle=33.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "528f9f09-3d8c-4fcb-8ff0-3beb8da953f5", "2026-07-09T20:55:54Z", ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:46.688] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46732, oid: "528f9f09-3d8c-4fcb-8ff0-3beb8da953f5", upload_time: "2026-07-09T20:55:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]} [2026-07-09 12:52:46.688] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:55:54Z", "value" => "morefun"} [2026-07-09 12:52:46.710] [DEBUG] QUERY OK db=20.6ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "morefun", "vendor", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399902, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.710] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:55:54Z", "value" => "kiosk_launcher"} [2026-07-09 12:52:46.743] [DEBUG] QUERY OK db=33.2ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "kiosk_launcher", "model", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399903, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.744] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:55:54Z", "value" => "1.0"} [2026-07-09 12:52:46.761] [DEBUG] QUERY OK db=16.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "1.0", "app_version", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399904, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.761] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:55:54Z", "value" => "13"} [2026-07-09 12:52:46.773] [DEBUG] QUERY OK db=10.9ms queue=0.6ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "13", "android_version", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399905, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.774] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "889"} [2026-07-09 12:52:46.793] [DEBUG] QUERY OK db=17.9ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "889", "ram_free_mb", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399906, itemkey: "ram_free_mb", value: "889", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.793] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:55:54Z", "value" => "WIFI"} [2026-07-09 12:52:46.826] [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-07-09T20:55:54Z", "WIFI", "network_type", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399907, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.827] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:55:54Z", "value" => "true"} [2026-07-09 12:52:46.850] [DEBUG] QUERY OK db=22.8ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "true", "kiosk_active", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399908, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.850] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:55:54Z", "value" => ""} [2026-07-09 12:52:46.869] [DEBUG] QUERY OK db=18.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:55:54Z", "sim_operator", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399909, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.869] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"} [2026-07-09 12:52:46.882] [DEBUG] QUERY OK db=11.7ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "UNKNOWN", "sim_number", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399910, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.882] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"} [2026-07-09 12:52:46.901] [DEBUG] QUERY OK db=18.5ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "UNKNOWN", "sim_iccid", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399911, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"} [2026-07-09 12:52:46.927] [DEBUG] QUERY OK db=25.1ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "UNKNOWN", "sim_imsi", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399912, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.928] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"} [2026-07-09 12:52:46.962] [DEBUG] QUERY OK db=33.6ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "UNKNOWN", "sim_iccid2", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399913, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.962] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:55:54Z", "value" => "UNKNOWN"} [2026-07-09 12:52:46.978] [DEBUG] QUERY OK db=12.0ms queue=3.3ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "UNKNOWN", "sim_imsi2", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:46.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399914, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:46.979] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "10"} [2026-07-09 12:52:47.000] [DEBUG] QUERY OK db=20.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "10", "data_usage_mb", 46732, ~N[2026-07-09 12:52:46], ~N[2026-07-09 12:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399915, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:46], updated_at: ~N[2026-07-09 12:52:46]}} [2026-07-09 12:52:47.000] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:55:54Z", "value" => "0"} [2026-07-09 12:52:47.024] [DEBUG] QUERY OK db=23.0ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55:54Z", "0", "mobile_data_mb", 46732, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399916, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.025] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:55: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-07-09 12:52:47.055] [DEBUG] QUERY OK db=29.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:55: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", 46732, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399917, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:55:54Z", message: nil, status_log_id: 46732, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.056] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:52:47.056] [INFO ] Incoming JSON payload: {"oid":"f6643783-7173-4349-ade1-b25ae3264435","sn":"98250904730001","uploadTime":"2026-07-09T12:52:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:52:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:52:47.057] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f6643783-7173-4349-ade1-b25ae3264435", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:52:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:52:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:52:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:52:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:52:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:52:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:52:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:52:46Z", "vendor" => "morefun"} [2026-07-09 12:52:47.057] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:52:47.057] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:52:47.057] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:52:47.059] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=34.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-07-09 12:52:47.061] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 12:52:47.061] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:52:47.062] [DEBUG] QUERY OK source="tms_terminals" db=0.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.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:52:47.062] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:52:47.074] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:52:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:47.074] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:52:47.076] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:47.095] [DEBUG] QUERY OK source="tms_terminals" db=18.6ms queue=0.1ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:47.120] [DEBUG] QUERY OK db=24.2ms idle=19.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "f6643783-7173-4349-ade1-b25ae3264435", "2026-07-09T12:52:46Z", ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:47.120] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46733, oid: "f6643783-7173-4349-ade1-b25ae3264435", upload_time: "2026-07-09T12:52:46Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]} [2026-07-09 12:52:47.120] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:52:46Z", "value" => "morefun"} [2026-07-09 12:52:47.154] [DEBUG] QUERY OK db=31.7ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "morefun", "vendor", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399918, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.154] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:52:46Z", "value" => "kiosk_launcher"} [2026-07-09 12:52:47.166] [DEBUG] QUERY OK db=11.2ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "kiosk_launcher", "model", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399919, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.166] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:52:46Z", "value" => "1.0"} [2026-07-09 12:52:47.182] [DEBUG] QUERY OK db=15.0ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "1.0", "app_version", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399920, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.182] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:52:46Z", "value" => "13"} [2026-07-09 12:52:47.216] [DEBUG] QUERY OK db=31.9ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "13", "android_version", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399921, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.216] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "1083"} [2026-07-09 12:52:47.239] [DEBUG] QUERY OK db=22.9ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "1083", "ram_free_mb", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399922, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.240] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:52:46Z", "value" => "WIFI"} [2026-07-09 12:52:47.261] [DEBUG] QUERY OK db=19.6ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "WIFI", "network_type", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399923, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.262] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:52:46Z", "value" => "true"} [2026-07-09 12:52:47.277] [DEBUG] QUERY OK db=14.7ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "true", "kiosk_active", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399924, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.278] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:52:46Z", "value" => ""} [2026-07-09 12:52:47.299] [DEBUG] QUERY OK db=21.0ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:52:46Z", "sim_operator", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399925, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.300] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"} [2026-07-09 12:52:47.323] [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-07-09T12:52:46Z", "UNKNOWN", "sim_number", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399926, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.323] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"} [2026-07-09 12:52:47.351] [DEBUG] QUERY OK db=27.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "UNKNOWN", "sim_iccid", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399927, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.352] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"} [2026-07-09 12:52:47.366] [DEBUG] QUERY OK db=13.6ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "UNKNOWN", "sim_imsi", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399928, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.367] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"} [2026-07-09 12:52:47.378] [DEBUG] QUERY OK db=10.8ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "UNKNOWN", "sim_iccid2", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399929, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.378] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:52:46Z", "value" => "UNKNOWN"} [2026-07-09 12:52:47.399] [DEBUG] QUERY OK db=20.3ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "UNKNOWN", "sim_imsi2", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399930, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.400] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "26"} [2026-07-09 12:52:47.432] [DEBUG] QUERY OK db=31.8ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "26", "data_usage_mb", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399931, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.432] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:52:46Z", "value" => "0"} [2026-07-09 12:52:47.454] [DEBUG] QUERY OK db=20.8ms queue=0.8ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52:46Z", "0", "mobile_data_mb", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399932, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.455] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:52:47.477] [DEBUG] QUERY OK db=20.9ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:52: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46733, ~N[2026-07-09 12:52:47], ~N[2026-07-09 12:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:47.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399933, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:52:46Z", message: nil, status_log_id: 46733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:47], updated_at: ~N[2026-07-09 12:52:47]}} [2026-07-09 12:52:47.976] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 12:52:47.976] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T12:52:47Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T12:52:47Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T12:52:47Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T12:52:47Z","value":"0"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T12:52:47Z","value":"61"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":""},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":""},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T12:52:47Z","vendor":"softpos"} [2026-07-09 12:52:47.976] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T12:52:47Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T12:52:47Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T12:52:47Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T12:52:47Z", "value" => "0"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T12:52:47Z", "value" => "61"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => ""}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => ""}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T12:52:47Z", "vendor" => "softpos"} [2026-07-09 12:52:47.976] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-07-09 12:52:47.977] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 12:52:47.977] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 12:52:47.978] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.1ms idle=510.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 12:52:47.979] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=502.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 12:52:47.988] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms queue=1.8ms idle=6.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` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 12:52:47.995] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=1.9ms idle=12.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-07-09 12:52:48.001] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.4ms idle=12.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 12:52:48.036] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=31.2ms idle=10.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 12:52:48.041] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=220.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 ["513940210000000"] [2026-07-09 12:52:48.042] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 12:52:48.047] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=0.4ms 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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 12:52:48.052] [DEBUG] QUERY OK source="address" db=0.4ms queue=1.9ms idle=13.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` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 12:52:48.053] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 12:52:48.059] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 12:52:48.100] [DEBUG] QUERY OK db=32.4ms queue=1.9ms idle=18.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", "1140e1f4330a7210f40d09a752696db10b2efa64781735ea6f534796d28e2c86", 5026, 969, ~U[2026-07-09 12:52:48Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 12:52:48.100] [INFO ] AutoPushService: Created push log 33401 for MF919 params.zip [2026-07-09 12:52:48.104] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 5026, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 12:52:48.104] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 12:52:48.108] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 12:52:48.124] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=1.8ms 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 ["emv_config", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 12:52:48.129] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 12:52:48.147] [DEBUG] QUERY OK db=16.0ms queue=1.0ms idle=30.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", "616838d69d32e2c945b43ea0cd86eb53d38e0ce082a14fe5d9fb27e616eb7f81", 1508, 2334, ~U[2026-07-09 12:52:48Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 12:52:48.148] [INFO ] AutoPushService: Created push log 33402 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 12:52:48.148] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 1508, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 12:52:48.148] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 12:52:48.148] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 12:52:48.149] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms idle=24.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 12:52:48.153] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 12:52:48.154] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 12:52:48.155] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 12:52:48.213] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 12:52:48.213] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 12:52:48.213] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 12:52:48.213] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 12:52:48.213] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 12:52:48.215] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms 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` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:52:48.215] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 12:52:48.281] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=41.1ms idle=60.9ms UPDATE `tms_terminals` SET `status` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", nil, nil, nil, ~N[2026-07-09 12:52:48], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:52:48.281] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 12:52:48.282] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=67.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:52:48.350] [DEBUG] QUERY OK source="tms_terminals" db=25.2ms queue=41.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:48], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:52:48.374] [DEBUG] QUERY OK db=23.6ms idle=67.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T12:52:47Z", ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:52:48.374] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46734, oid: "organization_id", upload_time: "2026-07-09T12:52:47Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]} [2026-07-09 12:52:48.374] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T12:52:47Z", "value" => "online"} [2026-07-09 12:52:48.394] [DEBUG] QUERY OK db=19.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T12:52:47Z", "online", "status", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399934, itemkey: "status", value: "online", timestamp: "2026-07-09T12:52:47Z", message: "Terminal status update", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.394] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 12:52:48.395] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=20.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:48], 62] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-09 12:52:48.395] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T12:52:47Z", "value" => "100"} [2026-07-09 12:52:48.428] [DEBUG] QUERY OK db=32.6ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T12:52:47Z", "100", "battery", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399935, itemkey: "battery", value: "100", timestamp: "2026-07-09T12:52:47Z", message: "Battery level", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.429] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T12:52:47Z", "value" => "online"} [2026-07-09 12:52:48.453] [DEBUG] QUERY OK db=22.9ms queue=0.6ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T12:52:47Z", "online", "network", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399936, itemkey: "network", value: "online", timestamp: "2026-07-09T12:52:47Z", message: "Network connectivity", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.454] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 12:52:48.455] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=26.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:48], 62] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-09 12:52:48.455] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T12:52:47Z", "value" => "0"} [2026-07-09 12:52:48.494] [DEBUG] QUERY OK db=38.7ms 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-07-09T12:52:47Z", "0", "cpu", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399937, itemkey: "cpu", value: "0", timestamp: "2026-07-09T12:52:47Z", message: "CPU usage percentage", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.495] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T12:52:47Z", "value" => "61"} [2026-07-09 12:52:48.530] [DEBUG] QUERY OK db=35.0ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T12:52:47Z", "61", "memory", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399938, itemkey: "memory", value: "61", timestamp: "2026-07-09T12:52:47Z", message: "Memory usage percentage", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.531] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => ""} [2026-07-09 12:52:48.595] [DEBUG] QUERY OK db=23.0ms queue=41.1ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["EMV Config", "emv_config", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399939, itemkey: "emv_config", value: nil, timestamp: nil, message: "EMV Config", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.596] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => ""} [2026-07-09 12:52:48.652] [DEBUG] QUERY OK db=14.8ms queue=41.4ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["Parameter config", "parameter_config", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399940, itemkey: "parameter_config", value: nil, timestamp: nil, message: "Parameter config", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.655] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 12:52:48.686] [DEBUG] QUERY OK db=28.2ms queue=0.7ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399941, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.687] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 12:52:48.721] [DEBUG] QUERY OK db=33.8ms queue=0.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46734, ~N[2026-07-09 12:52:48], ~N[2026-07-09 12:52:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:52:48.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399942, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:52:48], updated_at: ~N[2026-07-09 12:52:48]}} [2026-07-09 12:52:48.722] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=36.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:52:48], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-09 12:52:48.726] [WARN ] Unexpected async result [2026-07-09 12:52:48.726] [WARN ] Unexpected async result [2026-07-09 12:53:16.688] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:53:16.688] [INFO ] Incoming JSON payload: {"oid":"da006b87-3c48-448f-a124-b0e896cb098a","sn":"98251226730001","uploadTime":"2026-07-09T20:56:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"ram_free_mb","value":"897","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:56:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:56: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.reso (truncated) [2026-07-09 12:53:16.689] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "da006b87-3c48-448f-a124-b0e896cb098a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:56:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:56:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:56:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:56:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "897"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:56:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:56:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:56:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:56: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-07-09T20:56:25Z", "vendor" => "morefun"} [2026-07-09 12:53:16.689] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:53:16.689] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:53:16.689] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:53:16.693] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms queue=0.1ms idle=1129.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-07-09 12:53:16.695] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=125.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-07-09 12:53:16.696] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:53:16.698] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:53:16.699] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:53:16.718] [DEBUG] QUERY OK source="tms_terminals" db=18.9ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:53:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:53:16.718] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:53:16.720] [DEBUG] QUERY OK source="tms_terminals" db=1.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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:53:16.754] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:53:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:53:16.778] [DEBUG] QUERY OK db=23.6ms idle=34.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "da006b87-3c48-448f-a124-b0e896cb098a", "2026-07-09T20:56:25Z", ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:53:16.778] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46735, oid: "da006b87-3c48-448f-a124-b0e896cb098a", upload_time: "2026-07-09T20:56:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]} [2026-07-09 12:53:16.778] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:56:25Z", "value" => "morefun"} [2026-07-09 12:53:16.799] [DEBUG] QUERY OK db=20.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "morefun", "vendor", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399943, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.800] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:56:25Z", "value" => "kiosk_launcher"} [2026-07-09 12:53:16.821] [DEBUG] QUERY OK db=20.8ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "kiosk_launcher", "model", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399944, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.821] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:56:25Z", "value" => "1.0"} [2026-07-09 12:53:16.851] [DEBUG] QUERY OK db=29.7ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "1.0", "app_version", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399945, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.852] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:56:25Z", "value" => "13"} [2026-07-09 12:53:16.876] [DEBUG] QUERY OK db=24.3ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "13", "android_version", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399946, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.877] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "897"} [2026-07-09 12:53:16.905] [DEBUG] QUERY OK db=27.8ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "897", "ram_free_mb", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399947, itemkey: "ram_free_mb", value: "897", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.906] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:56:25Z", "value" => "WIFI"} [2026-07-09 12:53:16.925] [DEBUG] QUERY OK db=18.6ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "WIFI", "network_type", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399948, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.925] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:56:25Z", "value" => "true"} [2026-07-09 12:53:16.951] [DEBUG] QUERY OK db=26.0ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "true", "kiosk_active", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:16.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399949, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:16.952] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:56:25Z", "value" => ""} [2026-07-09 12:53:17.017] [DEBUG] QUERY OK db=23.5ms queue=41.4ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:56:25Z", "sim_operator", 46735, ~N[2026-07-09 12:53:16], ~N[2026-07-09 12:53:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399950, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:16], updated_at: ~N[2026-07-09 12:53:16]}} [2026-07-09 12:53:17.017] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.046] [DEBUG] QUERY OK db=27.4ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "UNKNOWN", "sim_number", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399951, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.046] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.060] [DEBUG] QUERY OK db=13.9ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "UNKNOWN", "sim_iccid", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399952, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.062] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.091] [DEBUG] QUERY OK db=27.2ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "UNKNOWN", "sim_imsi", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399953, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.091] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.115] [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-07-09T20:56:25Z", "UNKNOWN", "sim_iccid2", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399954, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.115] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:56:25Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.145] [DEBUG] QUERY OK db=29.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "UNKNOWN", "sim_imsi2", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399955, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.145] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "10"} [2026-07-09 12:53:17.166] [DEBUG] QUERY OK db=20.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "10", "data_usage_mb", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399956, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.166] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:56:25Z", "value" => "0"} [2026-07-09 12:53:17.183] [DEBUG] QUERY OK db=16.2ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56:25Z", "0", "mobile_data_mb", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399957, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.184] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:56: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-07-09 12:53:17.217] [DEBUG] QUERY OK db=32.8ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:56: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" <> ..., "installed_apps", 46735, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399958, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:56:25Z", message: nil, status_log_id: 46735, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.219] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:53:17.219] [INFO ] Incoming JSON payload: {"oid":"10d95e19-3d69-417f-bc58-29f98324901c","sn":"98250904730001","uploadTime":"2026-07-09T12:53:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:53:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:53:17.221] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "10d95e19-3d69-417f-bc58-29f98324901c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:53:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:53:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:53:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:53:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:53:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:53:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:53:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:53:16Z", "vendor" => "morefun"} [2026-07-09 12:53:17.221] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:53:17.221] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:53:17.221] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:53:17.222] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=39.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-07-09 12:53:17.223] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=5.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-07-09 12:53:17.223] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:53:17.224] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:53:17.225] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:53:17.259] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:53:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:53:17.259] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:53:17.260] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:53:17.280] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:53:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:53:17.313] [DEBUG] QUERY OK db=32.3ms idle=19.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "10d95e19-3d69-417f-bc58-29f98324901c", "2026-07-09T12:53:16Z", ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:53:17.313] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46736, oid: "10d95e19-3d69-417f-bc58-29f98324901c", upload_time: "2026-07-09T12:53:16Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]} [2026-07-09 12:53:17.313] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:53:16Z", "value" => "morefun"} [2026-07-09 12:53:17.364] [DEBUG] QUERY OK db=50.3ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "morefun", "vendor", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399959, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.364] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:53:16Z", "value" => "kiosk_launcher"} [2026-07-09 12:53:17.388] [DEBUG] QUERY OK db=23.0ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "kiosk_launcher", "model", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399960, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.389] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:53:16Z", "value" => "1.0"} [2026-07-09 12:53:17.417] [DEBUG] QUERY OK db=27.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "1.0", "app_version", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399961, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.418] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:53:16Z", "value" => "13"} [2026-07-09 12:53:17.447] [DEBUG] QUERY OK db=28.9ms queue=0.3ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "13", "android_version", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399962, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.448] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "1079"} [2026-07-09 12:53:17.471] [DEBUG] QUERY OK db=22.1ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "1079", "ram_free_mb", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399963, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.471] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:53:16Z", "value" => "WIFI"} [2026-07-09 12:53:17.515] [DEBUG] QUERY OK db=42.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "WIFI", "network_type", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399964, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.515] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:53:16Z", "value" => "true"} [2026-07-09 12:53:17.541] [DEBUG] QUERY OK db=25.3ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "true", "kiosk_active", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399965, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.541] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:53:16Z", "value" => ""} [2026-07-09 12:53:17.563] [DEBUG] QUERY OK db=20.0ms queue=0.8ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:53:16Z", "sim_operator", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399966, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.563] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.579] [DEBUG] QUERY OK db=15.6ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "UNKNOWN", "sim_number", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399967, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.579] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.608] [DEBUG] QUERY OK db=28.6ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "UNKNOWN", "sim_iccid", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399968, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.609] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.644] [DEBUG] QUERY OK db=34.6ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "UNKNOWN", "sim_imsi", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399969, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.644] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.669] [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-07-09T12:53:16Z", "UNKNOWN", "sim_iccid2", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399970, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.670] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:53:16Z", "value" => "UNKNOWN"} [2026-07-09 12:53:17.691] [DEBUG] QUERY OK db=20.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "UNKNOWN", "sim_imsi2", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399971, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.693] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "26"} [2026-07-09 12:53:17.716] [DEBUG] QUERY OK db=22.4ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "26", "data_usage_mb", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399972, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.716] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:53:16Z", "value" => "0"} [2026-07-09 12:53:17.742] [DEBUG] QUERY OK db=25.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:16Z", "0", "mobile_data_mb", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399973, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:17.745] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:53:17.786] [DEBUG] QUERY OK db=40.5ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46736, ~N[2026-07-09 12:53:17], ~N[2026-07-09 12:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:17.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399974, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:53:16Z", message: nil, status_log_id: 46736, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:17], updated_at: ~N[2026-07-09 12:53:17]}} [2026-07-09 12:53:47.202] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:53:47.202] [INFO ] Incoming JSON payload: {"oid":"2f5f240d-239b-45a2-a78c-a77b52133ca9","sn":"98250904730001","uploadTime":"2026-07-09T12:53:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:53:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:53: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:53:47.204] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2f5f240d-239b-45a2-a78c-a77b52133ca9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:53:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:53:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:53:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:53:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:53:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:53:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:53:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:53: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:53:46Z", "vendor" => "morefun"} [2026-07-09 12:53:47.204] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:53:47.204] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:53:47.204] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:53:47.205] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=546.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-07-09 12:53:47.206] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=379.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-07-09 12:53:47.206] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:53:47.208] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:53:47.209] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:53:47.230] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms queue=0.1ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:53:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:53:47.231] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:53:47.232] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:53:47.253] [DEBUG] QUERY OK source="tms_terminals" db=21.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:53:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:53:47.283] [DEBUG] QUERY OK db=29.4ms idle=21.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "2f5f240d-239b-45a2-a78c-a77b52133ca9", "2026-07-09T12:53:46Z", ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:53:47.283] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46737, oid: "2f5f240d-239b-45a2-a78c-a77b52133ca9", upload_time: "2026-07-09T12:53:46Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]} [2026-07-09 12:53:47.283] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:53:46Z", "value" => "morefun"} [2026-07-09 12:53:47.316] [DEBUG] QUERY OK db=31.4ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "morefun", "vendor", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399975, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.317] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:53:46Z", "value" => "kiosk_launcher"} [2026-07-09 12:53:47.340] [DEBUG] QUERY OK db=22.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "kiosk_launcher", "model", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399976, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.341] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:53:46Z", "value" => "1.0"} [2026-07-09 12:53:47.363] [DEBUG] QUERY OK db=22.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "1.0", "app_version", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399977, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.364] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:53:46Z", "value" => "13"} [2026-07-09 12:53:47.387] [DEBUG] QUERY OK db=23.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "13", "android_version", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399978, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.388] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "1079"} [2026-07-09 12:53:47.411] [DEBUG] QUERY OK db=23.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "1079", "ram_free_mb", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399979, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.411] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:53:46Z", "value" => "WIFI"} [2026-07-09 12:53:47.435] [DEBUG] QUERY OK db=22.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "WIFI", "network_type", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399980, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.435] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:53:46Z", "value" => "true"} [2026-07-09 12:53:47.460] [DEBUG] QUERY OK db=24.7ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "true", "kiosk_active", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399981, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.461] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:53:46Z", "value" => ""} [2026-07-09 12:53:47.490] [DEBUG] QUERY OK db=28.0ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:53:46Z", "sim_operator", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399982, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.490] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"} [2026-07-09 12:53:47.606] [DEBUG] QUERY OK db=114.6ms queue=1.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "UNKNOWN", "sim_number", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399983, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.608] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"} [2026-07-09 12:53:47.638] [DEBUG] QUERY OK db=29.7ms idle=118.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "UNKNOWN", "sim_iccid", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399984, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.638] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"} [2026-07-09 12:53:47.657] [DEBUG] QUERY OK db=18.5ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "UNKNOWN", "sim_imsi", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399985, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.658] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"} [2026-07-09 12:53:47.681] [DEBUG] QUERY OK db=22.8ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "UNKNOWN", "sim_iccid2", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399986, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.681] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:53:46Z", "value" => "UNKNOWN"} [2026-07-09 12:53:47.704] [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-07-09T12:53:46Z", "UNKNOWN", "sim_imsi2", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399987, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.704] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "26"} [2026-07-09 12:53:47.734] [DEBUG] QUERY OK db=29.4ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "26", "data_usage_mb", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399988, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.735] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:53:46Z", "value" => "0"} [2026-07-09 12:53:47.759] [DEBUG] QUERY OK db=23.0ms queue=0.4ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53:46Z", "0", "mobile_data_mb", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399989, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:53:47.760] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:53: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:53:47.783] [DEBUG] QUERY OK db=22.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:53: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46737, ~N[2026-07-09 12:53:47], ~N[2026-07-09 12:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:53:47.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399990, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:53:46Z", message: nil, status_log_id: 46737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:53:47], updated_at: ~N[2026-07-09 12:53:47]}} [2026-07-09 12:54:16.823] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:54:16.823] [INFO ] Incoming JSON payload: {"oid":"bed92a1a-c5cd-42e9-835f-35c8cf9b3c7e","sn":"98251226730001","uploadTime":"2026-07-09T20:57:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:57:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:57: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.reso (truncated) [2026-07-09 12:54:16.824] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bed92a1a-c5cd-42e9-835f-35c8cf9b3c7e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:57:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:57:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:57:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:57:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:57:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:57:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:57:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:57: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-07-09T20:57:25Z", "vendor" => "morefun"} [2026-07-09 12:54:16.824] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:54:16.824] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:54:16.824] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:54:16.825] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1062.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-07-09 12:54:16.826] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=60.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-07-09 12:54:16.826] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:54:16.827] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:54:16.828] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:54:16.862] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms decode=0.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:54:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:54:16.862] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:54:16.863] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:54:16.878] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:54:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:54:16.902] [DEBUG] QUERY OK db=24.2ms idle=14.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bed92a1a-c5cd-42e9-835f-35c8cf9b3c7e", "2026-07-09T20:57:25Z", ~N[2026-07-09 12:54:16], ~N[2026-07-09 12:54:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:54:16.903] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46738, oid: "bed92a1a-c5cd-42e9-835f-35c8cf9b3c7e", upload_time: "2026-07-09T20:57:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:16], updated_at: ~N[2026-07-09 12:54:16]} [2026-07-09 12:54:16.903] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:57:25Z", "value" => "morefun"} [2026-07-09 12:54:16.938] [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-07-09T20:57:25Z", "morefun", "vendor", 46738, ~N[2026-07-09 12:54:16], ~N[2026-07-09 12:54:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:16.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399991, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:16], updated_at: ~N[2026-07-09 12:54:16]}} [2026-07-09 12:54:16.938] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:57:25Z", "value" => "kiosk_launcher"} [2026-07-09 12:54:16.962] [DEBUG] QUERY OK db=23.4ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "kiosk_launcher", "model", 46738, ~N[2026-07-09 12:54:16], ~N[2026-07-09 12:54:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:16.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399992, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:16], updated_at: ~N[2026-07-09 12:54:16]}} [2026-07-09 12:54:16.962] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:57:25Z", "value" => "1.0"} [2026-07-09 12:54:16.975] [DEBUG] QUERY OK db=12.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "1.0", "app_version", 46738, ~N[2026-07-09 12:54:16], ~N[2026-07-09 12:54:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:16.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399993, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:16], updated_at: ~N[2026-07-09 12:54:16]}} [2026-07-09 12:54:16.976] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:57:25Z", "value" => "13"} [2026-07-09 12:54:17.002] [DEBUG] QUERY OK db=23.1ms queue=0.6ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "13", "android_version", 46738, ~N[2026-07-09 12:54:16], ~N[2026-07-09 12:54:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399994, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:16], updated_at: ~N[2026-07-09 12:54:16]}} [2026-07-09 12:54:17.003] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "884"} [2026-07-09 12:54:17.034] [DEBUG] QUERY OK db=30.3ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "884", "ram_free_mb", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399995, itemkey: "ram_free_mb", value: "884", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.035] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:57:25Z", "value" => "WIFI"} [2026-07-09 12:54:17.059] [DEBUG] QUERY OK db=23.4ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "WIFI", "network_type", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399996, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.059] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:57:25Z", "value" => "true"} [2026-07-09 12:54:17.084] [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-07-09T20:57:25Z", "true", "kiosk_active", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399997, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.084] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:57:25Z", "value" => ""} [2026-07-09 12:54:17.110] [DEBUG] QUERY OK db=25.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:57:25Z", "sim_operator", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399998, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.111] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.148] [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-07-09T20:57:25Z", "UNKNOWN", "sim_number", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 399999, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.149] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.183] [DEBUG] QUERY OK db=34.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "UNKNOWN", "sim_iccid", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400000, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.184] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.196] [DEBUG] QUERY OK db=11.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "UNKNOWN", "sim_imsi", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400001, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.196] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.221] [DEBUG] QUERY OK db=23.8ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "UNKNOWN", "sim_iccid2", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400002, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.221] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:57:25Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.256] [DEBUG] QUERY OK db=34.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "UNKNOWN", "sim_imsi2", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400003, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.257] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "10"} [2026-07-09 12:54:17.281] [DEBUG] QUERY OK db=23.5ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "10", "data_usage_mb", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400004, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.281] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:57:25Z", "value" => "0"} [2026-07-09 12:54:17.304] [DEBUG] QUERY OK db=21.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:25Z", "0", "mobile_data_mb", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400005, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.304] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:57: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-07-09 12:54:17.326] [DEBUG] QUERY OK db=20.8ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57: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" <> ..., "installed_apps", 46738, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400006, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:57:25Z", message: nil, status_log_id: 46738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.328] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:54:17.329] [INFO ] Incoming JSON payload: {"oid":"1f85be04-18b7-4828-b34f-a8c0f11ddaac","sn":"98250904730001","uploadTime":"2026-07-09T12:54:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-07-09T12:54:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:54:17.330] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1f85be04-18b7-4828-b34f-a8c0f11ddaac", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:54:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:54:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:54:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:54:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:54:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:54:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:54:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:54:16Z", "vendor" => "morefun"} [2026-07-09 12:54:17.330] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:54:17.330] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:54:17.330] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:54:17.331] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=26.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-07-09 12:54:17.332] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=5.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-07-09 12:54:17.332] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:54:17.334] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:54:17.334] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:54:17.361] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:54:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:54:17.361] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:54:17.362] [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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:54:17.387] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:54:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:54:17.414] [DEBUG] QUERY OK db=26.8ms idle=25.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "1f85be04-18b7-4828-b34f-a8c0f11ddaac", "2026-07-09T12:54:16Z", ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:54:17.415] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46739, oid: "1f85be04-18b7-4828-b34f-a8c0f11ddaac", upload_time: "2026-07-09T12:54:16Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]} [2026-07-09 12:54:17.415] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:54:16Z", "value" => "morefun"} [2026-07-09 12:54:17.439] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "morefun", "vendor", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400007, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.440] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:54:16Z", "value" => "kiosk_launcher"} [2026-07-09 12:54:17.470] [DEBUG] QUERY OK db=29.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "kiosk_launcher", "model", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400008, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.470] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:54:16Z", "value" => "1.0"} [2026-07-09 12:54:17.508] [DEBUG] QUERY OK db=37.3ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "1.0", "app_version", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400009, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.508] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:54:16Z", "value" => "13"} [2026-07-09 12:54:17.537] [DEBUG] QUERY OK db=28.8ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "13", "android_version", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400010, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.538] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "1083"} [2026-07-09 12:54:17.590] [DEBUG] QUERY OK db=51.4ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "1083", "ram_free_mb", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400011, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.590] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:54:16Z", "value" => "WIFI"} [2026-07-09 12:54:17.618] [DEBUG] QUERY OK db=27.3ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "WIFI", "network_type", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400012, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.618] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:54:16Z", "value" => "true"} [2026-07-09 12:54:17.673] [DEBUG] QUERY OK db=54.4ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "true", "kiosk_active", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400013, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.673] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:54:16Z", "value" => ""} [2026-07-09 12:54:17.791] [DEBUG] QUERY OK db=117.0ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:54:16Z", "sim_operator", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400014, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.791] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.803] [DEBUG] QUERY OK db=11.0ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "UNKNOWN", "sim_number", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400015, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.803] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.835] [DEBUG] QUERY OK db=30.8ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "UNKNOWN", "sim_iccid", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400016, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.835] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.860] [DEBUG] QUERY OK db=24.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "UNKNOWN", "sim_imsi", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400017, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.860] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.892] [DEBUG] QUERY OK db=31.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "UNKNOWN", "sim_iccid2", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400018, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.894] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:54:16Z", "value" => "UNKNOWN"} [2026-07-09 12:54:17.909] [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-07-09T12:54:16Z", "UNKNOWN", "sim_imsi2", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400019, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.910] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "26"} [2026-07-09 12:54:17.941] [DEBUG] QUERY OK db=29.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "26", "data_usage_mb", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400020, itemkey: "data_usage_mb", value: "26", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.942] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:54:16Z", "value" => "0"} [2026-07-09 12:54:17.966] [DEBUG] QUERY OK db=23.6ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:16Z", "0", "mobile_data_mb", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400021, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:17.967] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:54:17.997] [DEBUG] QUERY OK db=28.7ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46739, ~N[2026-07-09 12:54:17], ~N[2026-07-09 12:54:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:17.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400022, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:54:16Z", message: nil, status_log_id: 46739, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:17], updated_at: ~N[2026-07-09 12:54:17]}} [2026-07-09 12:54:46.916] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:54:46.916] [INFO ] Incoming JSON payload: {"oid":"ac57d7d0-ba6d-42fb-bc50-f72d592c5861","sn":"98251226730001","uploadTime":"2026-07-09T20:57:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"ram_free_mb","value":"899","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:57:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:57: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.reso (truncated) [2026-07-09 12:54:46.919] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ac57d7d0-ba6d-42fb-bc50-f72d592c5861", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:57:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:57:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:57:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:57:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "899"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:57:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:57:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:57:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:57: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-07-09T20:57:55Z", "vendor" => "morefun"} [2026-07-09 12:54:46.919] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:54:46.919] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:54:46.919] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:54:46.920] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=88.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-07-09 12:54:46.921] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=78.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-07-09 12:54:46.921] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:54:46.923] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:54:46.924] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:54:46.973] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:54:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:54:46.973] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:54:46.975] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:54:46.996] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:54:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:54:47.010] [DEBUG] QUERY OK db=13.0ms idle=21.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ac57d7d0-ba6d-42fb-bc50-f72d592c5861", "2026-07-09T20:57:55Z", ~N[2026-07-09 12:54:46], ~N[2026-07-09 12:54:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:54:47.010] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46740, oid: "ac57d7d0-ba6d-42fb-bc50-f72d592c5861", upload_time: "2026-07-09T20:57:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:46], updated_at: ~N[2026-07-09 12:54:46]} [2026-07-09 12:54:47.010] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:57:55Z", "value" => "morefun"} [2026-07-09 12:54:47.027] [DEBUG] QUERY OK db=17.1ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "morefun", "vendor", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400023, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.028] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:57:55Z", "value" => "kiosk_launcher"} [2026-07-09 12:54:47.052] [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-07-09T20:57:55Z", "kiosk_launcher", "model", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400024, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.052] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:57:55Z", "value" => "1.0"} [2026-07-09 12:54:47.087] [DEBUG] QUERY OK db=34.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "1.0", "app_version", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400025, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.087] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:57:55Z", "value" => "13"} [2026-07-09 12:54:47.106] [DEBUG] QUERY OK db=18.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "13", "android_version", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400026, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.106] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "899"} [2026-07-09 12:54:47.125] [DEBUG] QUERY OK db=18.1ms queue=0.2ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "899", "ram_free_mb", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400027, itemkey: "ram_free_mb", value: "899", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.127] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:57:55Z", "value" => "WIFI"} [2026-07-09 12:54:47.151] [DEBUG] QUERY OK db=23.8ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "WIFI", "network_type", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400028, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.151] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:57:55Z", "value" => "true"} [2026-07-09 12:54:47.177] [DEBUG] QUERY OK db=26.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "true", "kiosk_active", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400029, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.178] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:57:55Z", "value" => ""} [2026-07-09 12:54:47.202] [DEBUG] QUERY OK db=23.4ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:57:55Z", "sim_operator", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400030, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.202] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.224] [DEBUG] QUERY OK db=21.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "UNKNOWN", "sim_number", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400031, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.224] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.241] [DEBUG] QUERY OK db=16.0ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "UNKNOWN", "sim_iccid", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400032, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.241] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.275] [DEBUG] QUERY OK db=33.7ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "UNKNOWN", "sim_imsi", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400033, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.276] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.301] [DEBUG] QUERY OK db=24.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "UNKNOWN", "sim_iccid2", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400034, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.301] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:57:55Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.326] [DEBUG] QUERY OK db=24.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "UNKNOWN", "sim_imsi2", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400035, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.327] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "10"} [2026-07-09 12:54:47.347] [DEBUG] QUERY OK db=20.5ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "10", "data_usage_mb", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400036, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.348] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:57:55Z", "value" => "0"} [2026-07-09 12:54:47.381] [DEBUG] QUERY OK db=33.0ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57:55Z", "0", "mobile_data_mb", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400037, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.383] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:57: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-07-09 12:54:47.408] [DEBUG] QUERY OK db=23.6ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:57: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" <> ..., "installed_apps", 46740, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400038, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:57:55Z", message: nil, status_log_id: 46740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.409] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:54:47.409] [INFO ] Incoming JSON payload: {"oid":"3e62b0cb-50ea-4d77-b26c-d4b80b98ec3c","sn":"98250904730001","uploadTime":"2026-07-09T12:54:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:54:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:54:47.411] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3e62b0cb-50ea-4d77-b26c-d4b80b98ec3c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:54:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:54:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:54:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:54:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:54:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:54:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:54:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:54:47Z", "vendor" => "morefun"} [2026-07-09 12:54:47.411] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:54:47.411] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:54:47.411] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:54:47.412] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=29.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-07-09 12:54:47.413] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms 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-07-09 12:54:47.413] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:54:47.414] [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 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:54:47.414] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:54:47.435] [DEBUG] QUERY OK source="tms_terminals" db=20.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:54:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:54:47.435] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:54:47.436] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:54:47.458] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:54:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:54:47.483] [DEBUG] QUERY OK db=23.6ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "3e62b0cb-50ea-4d77-b26c-d4b80b98ec3c", "2026-07-09T12:54:47Z", ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:54:47.483] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46741, oid: "3e62b0cb-50ea-4d77-b26c-d4b80b98ec3c", upload_time: "2026-07-09T12:54:47Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]} [2026-07-09 12:54:47.483] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:54:47Z", "value" => "morefun"} [2026-07-09 12:54:47.524] [DEBUG] QUERY OK db=40.3ms queue=0.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "morefun", "vendor", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400039, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.525] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:54:47Z", "value" => "kiosk_launcher"} [2026-07-09 12:54:47.652] [DEBUG] QUERY OK db=126.7ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "kiosk_launcher", "model", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400040, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.652] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:54:47Z", "value" => "1.0"} [2026-07-09 12:54:47.722] [DEBUG] QUERY OK db=69.2ms idle=128.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "1.0", "app_version", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400041, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.722] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:54:47Z", "value" => "13"} [2026-07-09 12:54:47.773] [DEBUG] QUERY OK db=50.2ms idle=70.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "13", "android_version", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400042, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.773] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "1081"} [2026-07-09 12:54:47.800] [DEBUG] QUERY OK db=26.1ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "1081", "ram_free_mb", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400043, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.800] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:54:47Z", "value" => "WIFI"} [2026-07-09 12:54:47.812] [DEBUG] QUERY OK db=11.0ms queue=0.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "WIFI", "network_type", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400044, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.812] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:54:47Z", "value" => "true"} [2026-07-09 12:54:47.834] [DEBUG] QUERY OK db=21.0ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "true", "kiosk_active", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400045, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.834] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:54:47Z", "value" => ""} [2026-07-09 12:54:47.870] [DEBUG] QUERY OK db=36.2ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:54:47Z", "sim_operator", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400046, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.871] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.895] [DEBUG] QUERY OK db=23.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "UNKNOWN", "sim_number", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400047, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.895] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.919] [DEBUG] QUERY OK db=22.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "UNKNOWN", "sim_iccid", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400048, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.919] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.934] [DEBUG] QUERY OK db=14.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "UNKNOWN", "sim_imsi", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400049, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.936] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.970] [DEBUG] QUERY OK db=33.8ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "UNKNOWN", "sim_iccid2", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400050, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.971] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:54:47Z", "value" => "UNKNOWN"} [2026-07-09 12:54:47.995] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "UNKNOWN", "sim_imsi2", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:47.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400051, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:47.996] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "27"} [2026-07-09 12:54:48.023] [DEBUG] QUERY OK db=24.4ms queue=2.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "27", "data_usage_mb", 46741, ~N[2026-07-09 12:54:47], ~N[2026-07-09 12:54:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:48.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400052, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:47], updated_at: ~N[2026-07-09 12:54:47]}} [2026-07-09 12:54:48.023] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:54:47Z", "value" => "0"} [2026-07-09 12:54:48.041] [DEBUG] QUERY OK db=16.7ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54:47Z", "0", "mobile_data_mb", 46741, ~N[2026-07-09 12:54:48], ~N[2026-07-09 12:54:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:48.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400053, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:48], updated_at: ~N[2026-07-09 12:54:48]}} [2026-07-09 12:54:48.041] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:54:48.099] [DEBUG] QUERY OK db=55.1ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:54: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46741, ~N[2026-07-09 12:54:48], ~N[2026-07-09 12:54:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:54:48.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400054, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:54:47Z", message: nil, status_log_id: 46741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:54:48], updated_at: ~N[2026-07-09 12:54:48]}} [2026-07-09 12:55:17.039] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:55:17.039] [INFO ] Incoming JSON payload: {"oid":"110f1551-a36d-4db7-ba0c-46c193a4e0b7","sn":"98251226730001","uploadTime":"2026-07-09T20:58:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"ram_free_mb","value":"894","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"data_usage_mb","value":"10","timestamp":"2026-07-09T20:58:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:58: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.reso (truncated) [2026-07-09 12:55:17.041] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "110f1551-a36d-4db7-ba0c-46c193a4e0b7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:58:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:58:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:58:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:58:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "894"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:58:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:58:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:58:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "10"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:58: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-07-09T20:58:25Z", "vendor" => "morefun"} [2026-07-09 12:55:17.042] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:55:17.042] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:55:17.042] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:55:17.043] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1070.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-07-09 12:55:17.044] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=68.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-07-09 12:55:17.044] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:55:17.045] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:55:17.045] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:55:17.069] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:55:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:55:17.069] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:55:17.070] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:55:17.093] [DEBUG] QUERY OK source="tms_terminals" db=21.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:55:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:55:17.110] [DEBUG] QUERY OK db=16.8ms queue=0.1ms idle=22.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "110f1551-a36d-4db7-ba0c-46c193a4e0b7", "2026-07-09T20:58:25Z", ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:55:17.110] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46742, oid: "110f1551-a36d-4db7-ba0c-46c193a4e0b7", upload_time: "2026-07-09T20:58:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]} [2026-07-09 12:55:17.110] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:58:25Z", "value" => "morefun"} [2026-07-09 12:55:17.144] [DEBUG] QUERY OK db=33.2ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "morefun", "vendor", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400055, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.144] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:58:25Z", "value" => "kiosk_launcher"} [2026-07-09 12:55:17.168] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "kiosk_launcher", "model", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400056, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.168] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:58:25Z", "value" => "1.0"} [2026-07-09 12:55:17.191] [DEBUG] QUERY OK db=22.7ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "1.0", "app_version", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400057, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.192] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:58:25Z", "value" => "13"} [2026-07-09 12:55:17.214] [DEBUG] QUERY OK db=21.6ms queue=0.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "13", "android_version", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400058, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.214] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "894"} [2026-07-09 12:55:17.231] [DEBUG] QUERY OK db=16.3ms queue=0.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "894", "ram_free_mb", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400059, itemkey: "ram_free_mb", value: "894", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.232] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:58:25Z", "value" => "WIFI"} [2026-07-09 12:55:17.255] [DEBUG] QUERY OK db=22.5ms queue=0.2ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "WIFI", "network_type", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400060, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.256] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:58:25Z", "value" => "true"} [2026-07-09 12:55:17.288] [DEBUG] QUERY OK db=31.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "true", "kiosk_active", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400061, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.288] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:58:25Z", "value" => ""} [2026-07-09 12:55:17.311] [DEBUG] QUERY OK db=22.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:58:25Z", "sim_operator", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400062, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.311] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"} [2026-07-09 12:55:17.334] [DEBUG] QUERY OK db=22.0ms queue=0.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "UNKNOWN", "sim_number", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400063, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.334] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"} [2026-07-09 12:55:17.351] [DEBUG] QUERY OK db=16.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "UNKNOWN", "sim_iccid", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400064, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.352] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"} [2026-07-09 12:55:17.384] [DEBUG] QUERY OK db=31.2ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "UNKNOWN", "sim_imsi", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400065, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.384] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"} [2026-07-09 12:55:17.408] [DEBUG] QUERY OK db=23.7ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "UNKNOWN", "sim_iccid2", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400066, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.409] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:58:25Z", "value" => "UNKNOWN"} [2026-07-09 12:55:17.436] [DEBUG] QUERY OK db=26.9ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "UNKNOWN", "sim_imsi2", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400067, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.437] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "10"} [2026-07-09 12:55:17.461] [DEBUG] QUERY OK db=23.7ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "10", "data_usage_mb", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400068, itemkey: "data_usage_mb", value: "10", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.461] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:58:25Z", "value" => "0"} [2026-07-09 12:55:17.478] [DEBUG] QUERY OK db=16.5ms queue=0.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:25Z", "0", "mobile_data_mb", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400069, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.479] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:58: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-07-09 12:55:17.504] [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-07-09T20:58: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" <> ..., "installed_apps", 46742, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400070, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:58:25Z", message: nil, status_log_id: 46742, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.506] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:55:17.506] [INFO ] Incoming JSON payload: {"oid":"41bc823f-d6a2-4fce-8d63-d29415bc01fe","sn":"98250904730001","uploadTime":"2026-07-09T12:55:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"ram_free_mb","value":"1078","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:55:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:55:17.507] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "41bc823f-d6a2-4fce-8d63-d29415bc01fe", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:55:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:55:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:55:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:55:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "1078"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:55:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:55:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:55:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:55:17Z", "vendor" => "morefun"} [2026-07-09 12:55:17.507] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:55:17.507] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:55:17.507] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:55:17.508] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=29.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-07-09 12:55:17.509] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 12:55:17.509] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:55:17.511] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:55:17.511] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:55:17.569] [DEBUG] QUERY OK source="tms_terminals" db=57.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:55:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:55:17.569] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:55:17.570] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=58.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:55:17.601] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:55:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:55:17.693] [DEBUG] QUERY OK db=91.3ms idle=31.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "41bc823f-d6a2-4fce-8d63-d29415bc01fe", "2026-07-09T12:55:17Z", ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:55:17.693] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46743, oid: "41bc823f-d6a2-4fce-8d63-d29415bc01fe", upload_time: "2026-07-09T12:55:17Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]} [2026-07-09 12:55:17.694] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:55:17Z", "value" => "morefun"} [2026-07-09 12:55:17.759] [DEBUG] QUERY OK db=64.7ms idle=93.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "morefun", "vendor", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400071, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.760] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:55:17Z", "value" => "kiosk_launcher"} [2026-07-09 12:55:17.803] [DEBUG] QUERY OK db=42.8ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "kiosk_launcher", "model", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400072, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.803] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:55:17Z", "value" => "1.0"} [2026-07-09 12:55:17.827] [DEBUG] QUERY OK db=23.3ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "1.0", "app_version", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400073, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.827] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:55:17Z", "value" => "13"} [2026-07-09 12:55:17.845] [DEBUG] QUERY OK db=17.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "13", "android_version", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400074, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.846] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "1078"} [2026-07-09 12:55:17.883] [DEBUG] QUERY OK db=37.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "1078", "ram_free_mb", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400075, itemkey: "ram_free_mb", value: "1078", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.884] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:55:17Z", "value" => "WIFI"} [2026-07-09 12:55:17.917] [DEBUG] QUERY OK db=32.2ms queue=0.2ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "WIFI", "network_type", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400076, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.917] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:55:17Z", "value" => "true"} [2026-07-09 12:55:17.944] [DEBUG] QUERY OK db=25.5ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "true", "kiosk_active", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400077, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.944] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:55:17Z", "value" => ""} [2026-07-09 12:55:17.971] [DEBUG] QUERY OK db=26.6ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:55:17Z", "sim_operator", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:17.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400078, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:17.972] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"} [2026-07-09 12:55:18.005] [DEBUG] QUERY OK db=32.6ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "UNKNOWN", "sim_number", 46743, ~N[2026-07-09 12:55:17], ~N[2026-07-09 12:55:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400079, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:17], updated_at: ~N[2026-07-09 12:55:17]}} [2026-07-09 12:55:18.005] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"} [2026-07-09 12:55:18.034] [DEBUG] QUERY OK db=28.2ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "UNKNOWN", "sim_iccid", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400080, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.034] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"} [2026-07-09 12:55:18.062] [DEBUG] QUERY OK db=27.6ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "UNKNOWN", "sim_imsi", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400081, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.063] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"} [2026-07-09 12:55:18.089] [DEBUG] QUERY OK db=25.8ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "UNKNOWN", "sim_iccid2", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400082, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.089] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:55:17Z", "value" => "UNKNOWN"} [2026-07-09 12:55:18.120] [DEBUG] QUERY OK db=30.4ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "UNKNOWN", "sim_imsi2", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400083, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.121] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "27"} [2026-07-09 12:55:18.144] [DEBUG] QUERY OK db=22.8ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "27", "data_usage_mb", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400084, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.145] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:55:17Z", "value" => "0"} [2026-07-09 12:55:18.169] [DEBUG] QUERY OK db=23.7ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:17Z", "0", "mobile_data_mb", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400085, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:18.170] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:55:18.194] [DEBUG] QUERY OK db=23.5ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46743, ~N[2026-07-09 12:55:18], ~N[2026-07-09 12:55:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:18.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400086, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:55:17Z", message: nil, status_log_id: 46743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:18], updated_at: ~N[2026-07-09 12:55:18]}} [2026-07-09 12:55:21.840] [INFO ] Running offline device check... [2026-07-09 12:55:21.840] [INFO ] Starting offline device check... [2026-07-09 12:55:21.843] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.4ms idle=1492.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:747 [2026-07-09 12:55:21.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms queue=0.4ms idle=860.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 12:55:21.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.2ms idle=9.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.3ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.860] [INFO ] Starting scheduled rule validation [2026-07-09 12:55:21.860] [DEBUG] Validating missing assignments [2026-07-09 12:55:21.861] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.862] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms queue=0.6ms idle=0.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-07-09 12:55:21.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.863] [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:762 [2026-07-09 12:55:21.863] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.864] [DEBUG] QUERY OK source="tms_terminals" db=2.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-07-09 12:55:21.865] [DEBUG] Re-applied 0 rules during validation [2026-07-09 12:55:21.865] [DEBUG] Validating invalid assignments [2026-07-09 12:55:21.865] [DEBUG] Validating rule consistency [2026-07-09 12:55:21.865] [DEBUG] Updating group terminal counts [2026-07-09 12:55:21.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.866] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.868] [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:762 [2026-07-09 12:55:21.873] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.6ms idle=3.7ms 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-07-09 12:55:21.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.875] [DEBUG] QUERY OK source="terminal_groups" db=0.8ms queue=0.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-07-09 12:55:21.882] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms queue=0.7ms idle=4.9ms 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-07-09 12:55:21.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.884] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=1.1ms idle=0.5ms 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-07-09 12:55:21.885] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms 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-07-09 12:55:21.886] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.2ms 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-07-09 12:55:21.887] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.6ms idle=0.1ms 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-07-09 12:55:21.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.889] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.6ms 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-07-09 12:55:21.889] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-07-09 12:55:21.889] [INFO ] Rule validation completed - applied 0 fixes [2026-07-09 12:55:21.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.893] [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:762 [2026-07-09 12:55:21.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.909] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.910] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.911] [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:762 [2026-07-09 12:55:21.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.927] [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:762 [2026-07-09 12:55:21.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.945] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.947] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.948] [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:762 [2026-07-09 12:55:21.949] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.950] [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:762 [2026-07-09 12:55:21.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.952] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.952] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 12:55:21.954] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 12:55:21.954] [INFO ] Offline device check completed successfully [2026-07-09 12:55:47.358] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:55:47.359] [INFO ] Incoming JSON payload: {"oid":"f8dc49aa-9a25-4a01-a5bc-81d5f9496426","sn":"98251226730001","uploadTime":"2026-07-09T20:58:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T20:58:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:58: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.reso (truncated) [2026-07-09 12:55:47.360] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f8dc49aa-9a25-4a01-a5bc-81d5f9496426", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:58:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:58:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:58:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:58:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:58:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:58:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:58:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:58: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-07-09T20:58:55Z", "vendor" => "morefun"} [2026-07-09 12:55:47.360] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:55:47.360] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:55:47.360] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:55:47.362] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=714.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-07-09 12:55:47.363] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=309.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-07-09 12:55:47.363] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:55:47.364] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:55:47.364] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:55:47.408] [DEBUG] QUERY OK source="tms_terminals" db=43.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:55:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:55:47.408] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:55:47.410] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=45.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:697 [2026-07-09 12:55:47.433] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:55:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:55:47.452] [DEBUG] QUERY OK db=18.5ms queue=0.1ms idle=23.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f8dc49aa-9a25-4a01-a5bc-81d5f9496426", "2026-07-09T20:58:55Z", ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:55:47.452] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46744, oid: "f8dc49aa-9a25-4a01-a5bc-81d5f9496426", upload_time: "2026-07-09T20:58:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]} [2026-07-09 12:55:47.453] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:58:55Z", "value" => "morefun"} [2026-07-09 12:55:47.476] [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-07-09T20:58:55Z", "morefun", "vendor", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400087, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.476] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:58:55Z", "value" => "kiosk_launcher"} [2026-07-09 12:55:47.500] [DEBUG] QUERY OK db=23.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "kiosk_launcher", "model", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400088, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.501] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:58:55Z", "value" => "1.0"} [2026-07-09 12:55:47.544] [DEBUG] QUERY OK db=42.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "1.0", "app_version", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400089, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.544] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:58:55Z", "value" => "13"} [2026-07-09 12:55:47.577] [DEBUG] QUERY OK db=32.4ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "13", "android_version", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400090, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.578] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "892"} [2026-07-09 12:55:47.617] [DEBUG] QUERY OK db=38.3ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "892", "ram_free_mb", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400091, itemkey: "ram_free_mb", value: "892", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.617] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:58:55Z", "value" => "WIFI"} [2026-07-09 12:55:47.631] [DEBUG] QUERY OK db=14.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "WIFI", "network_type", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400092, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.632] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:58:55Z", "value" => "true"} [2026-07-09 12:55:47.654] [DEBUG] QUERY OK db=20.8ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "true", "kiosk_active", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400093, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.654] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:58:55Z", "value" => ""} [2026-07-09 12:55:47.688] [DEBUG] QUERY OK db=33.4ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:58:55Z", "sim_operator", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400094, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.688] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"} [2026-07-09 12:55:47.714] [DEBUG] QUERY OK db=25.0ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "UNKNOWN", "sim_number", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400095, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.715] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"} [2026-07-09 12:55:47.729] [DEBUG] QUERY OK db=13.5ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "UNKNOWN", "sim_iccid", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400096, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.729] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"} [2026-07-09 12:55:47.739] [DEBUG] QUERY OK db=9.0ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "UNKNOWN", "sim_imsi", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400097, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.739] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"} [2026-07-09 12:55:47.758] [DEBUG] QUERY OK db=18.8ms idle=10.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "UNKNOWN", "sim_iccid2", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400098, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.758] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:58:55Z", "value" => "UNKNOWN"} [2026-07-09 12:55:47.785] [DEBUG] QUERY OK db=26.4ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "UNKNOWN", "sim_imsi2", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400099, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.786] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "11"} [2026-07-09 12:55:47.810] [DEBUG] QUERY OK db=23.0ms queue=0.6ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "11", "data_usage_mb", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400100, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.810] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:58:55Z", "value" => "0"} [2026-07-09 12:55:47.832] [DEBUG] QUERY OK db=21.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58:55Z", "0", "mobile_data_mb", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400101, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.837] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:58: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-07-09 12:55:47.862] [DEBUG] QUERY OK db=21.3ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:58: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" <> ..., "installed_apps", 46744, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400102, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:58:55Z", message: nil, status_log_id: 46744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.863] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:55:47.863] [INFO ] Incoming JSON payload: {"oid":"19e5c7f3-7bc3-40be-934e-31b9f6ce16fd","sn":"98250904730001","uploadTime":"2026-07-09T12:55:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"ram_free_mb","value":"1075","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:55:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:55:47.864] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "19e5c7f3-7bc3-40be-934e-31b9f6ce16fd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:55:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:55:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:55:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:55:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "1075"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:55:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:55:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:55:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:55:47Z", "vendor" => "morefun"} [2026-07-09 12:55:47.864] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:55:47.864] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:55:47.864] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:55:47.866] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=33.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-07-09 12:55:47.868] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.3ms idle=5.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-07-09 12:55:47.868] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:55:47.871] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:55:47.871] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:55:47.898] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:55:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:55:47.899] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:55:47.900] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:55:47.932] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:55:47], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:55:47.942] [DEBUG] QUERY OK db=9.4ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "19e5c7f3-7bc3-40be-934e-31b9f6ce16fd", "2026-07-09T12:55:47Z", ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:55:47.942] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46745, oid: "19e5c7f3-7bc3-40be-934e-31b9f6ce16fd", upload_time: "2026-07-09T12:55:47Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]} [2026-07-09 12:55:47.942] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:55:47Z", "value" => "morefun"} [2026-07-09 12:55:47.961] [DEBUG] QUERY OK db=18.1ms idle=11.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "morefun", "vendor", 46745, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400103, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.962] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:55:47Z", "value" => "kiosk_launcher"} [2026-07-09 12:55:47.985] [DEBUG] QUERY OK db=23.0ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "kiosk_launcher", "model", 46745, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:47.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400104, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:47.986] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:55:47Z", "value" => "1.0"} [2026-07-09 12:55:48.015] [DEBUG] QUERY OK db=28.5ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "1.0", "app_version", 46745, ~N[2026-07-09 12:55:47], ~N[2026-07-09 12:55:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400105, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:47], updated_at: ~N[2026-07-09 12:55:47]}} [2026-07-09 12:55:48.015] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:55:47Z", "value" => "13"} [2026-07-09 12:55:48.062] [DEBUG] QUERY OK db=45.7ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "13", "android_version", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400106, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.062] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "1075"} [2026-07-09 12:55:48.095] [DEBUG] QUERY OK db=31.7ms queue=1.3ms idle=4.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "1075", "ram_free_mb", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400107, itemkey: "ram_free_mb", value: "1075", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.096] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:55:47Z", "value" => "WIFI"} [2026-07-09 12:55:48.105] [DEBUG] QUERY OK db=8.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "WIFI", "network_type", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400108, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.105] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:55:47Z", "value" => "true"} [2026-07-09 12:55:48.132] [DEBUG] QUERY OK db=26.5ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "true", "kiosk_active", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400109, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.133] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:55:47Z", "value" => ""} [2026-07-09 12:55:48.155] [DEBUG] QUERY OK db=21.5ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:55:47Z", "sim_operator", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400110, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.155] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"} [2026-07-09 12:55:48.188] [DEBUG] QUERY OK db=32.0ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "UNKNOWN", "sim_number", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400111, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.188] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"} [2026-07-09 12:55:48.207] [DEBUG] QUERY OK db=19.0ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "UNKNOWN", "sim_iccid", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400112, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.208] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"} [2026-07-09 12:55:48.217] [DEBUG] QUERY OK db=9.0ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "UNKNOWN", "sim_imsi", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400113, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.218] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"} [2026-07-09 12:55:48.232] [DEBUG] QUERY OK db=14.0ms idle=10.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "UNKNOWN", "sim_iccid2", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400114, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.233] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:55:47Z", "value" => "UNKNOWN"} [2026-07-09 12:55:48.256] [DEBUG] QUERY OK db=22.6ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "UNKNOWN", "sim_imsi2", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400115, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.256] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "27"} [2026-07-09 12:55:48.288] [DEBUG] QUERY OK db=30.8ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "27", "data_usage_mb", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400116, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.288] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:55:47Z", "value" => "0"} [2026-07-09 12:55:48.301] [DEBUG] QUERY OK db=12.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55:47Z", "0", "mobile_data_mb", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400117, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:55:48.302] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:55:48.313] [DEBUG] QUERY OK db=9.7ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:55: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46745, ~N[2026-07-09 12:55:48], ~N[2026-07-09 12:55:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:55:48.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400118, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:55:47Z", message: nil, status_log_id: 46745, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:55:48], updated_at: ~N[2026-07-09 12:55:48]}} [2026-07-09 12:56:17.682] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:56:17.682] [INFO ] Incoming JSON payload: {"oid":"d24d0871-8f2b-445e-8587-3245b82d5f48","sn":"98250904730001","uploadTime":"2026-07-09T12:56:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:56:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:56:17.683] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d24d0871-8f2b-445e-8587-3245b82d5f48", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:56:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:56:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:56:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:56:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:56:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:56:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:56:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:56:17Z", "vendor" => "morefun"} [2026-07-09 12:56:17.683] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:56:17.683] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:56:17.684] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:56:17.685] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=838.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-07-09 12:56:17.686] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=536.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-07-09 12:56:17.686] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:56:17.688] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:56:17.689] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:56:17.724] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:56:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:56:17.724] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:56:17.725] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=36.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:56:17.751] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:56:17], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:56:17.785] [DEBUG] QUERY OK db=33.6ms idle=26.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "d24d0871-8f2b-445e-8587-3245b82d5f48", "2026-07-09T12:56:17Z", ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:56:17.785] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46746, oid: "d24d0871-8f2b-445e-8587-3245b82d5f48", upload_time: "2026-07-09T12:56:17Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]} [2026-07-09 12:56:17.785] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:56:17Z", "value" => "morefun"} [2026-07-09 12:56:17.809] [DEBUG] QUERY OK db=22.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "morefun", "vendor", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400119, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.809] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:56:17Z", "value" => "kiosk_launcher"} [2026-07-09 12:56:17.847] [DEBUG] QUERY OK db=37.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "kiosk_launcher", "model", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400120, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.848] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:56:17Z", "value" => "1.0"} [2026-07-09 12:56:17.867] [DEBUG] QUERY OK db=18.6ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "1.0", "app_version", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400121, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.868] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:56:17Z", "value" => "13"} [2026-07-09 12:56:17.895] [DEBUG] QUERY OK db=26.5ms queue=0.1ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "13", "android_version", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400122, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.897] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "1080"} [2026-07-09 12:56:17.931] [DEBUG] QUERY OK db=34.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-07-09T12:56:17Z", "1080", "ram_free_mb", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400123, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.932] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:56:17Z", "value" => "WIFI"} [2026-07-09 12:56:17.956] [DEBUG] QUERY OK db=23.6ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "WIFI", "network_type", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400124, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.956] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:56:17Z", "value" => "true"} [2026-07-09 12:56:17.988] [DEBUG] QUERY OK db=29.7ms queue=0.1ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "true", "kiosk_active", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:17.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400125, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:17.989] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:56:17Z", "value" => ""} [2026-07-09 12:56:18.006] [DEBUG] QUERY OK db=16.9ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:56:17Z", "sim_operator", 46746, ~N[2026-07-09 12:56:17], ~N[2026-07-09 12:56:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400126, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:17], updated_at: ~N[2026-07-09 12:56:17]}} [2026-07-09 12:56:18.006] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.039] [DEBUG] QUERY OK db=31.7ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "UNKNOWN", "sim_number", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400127, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.039] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.063] [DEBUG] QUERY OK db=22.8ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "UNKNOWN", "sim_iccid", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400128, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.063] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.087] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "UNKNOWN", "sim_imsi", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400129, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.088] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.114] [DEBUG] QUERY OK db=25.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "UNKNOWN", "sim_iccid2", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400130, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.115] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:56:17Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.148] [DEBUG] QUERY OK db=31.5ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "UNKNOWN", "sim_imsi2", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400131, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.148] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "27"} [2026-07-09 12:56:18.178] [DEBUG] QUERY OK db=28.9ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "27", "data_usage_mb", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400132, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.178] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:56:17Z", "value" => "0"} [2026-07-09 12:56:18.217] [DEBUG] QUERY OK db=38.1ms queue=0.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:17Z", "0", "mobile_data_mb", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400133, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.218] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:56:18.236] [DEBUG] QUERY OK db=16.6ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46746, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400134, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:56:17Z", message: nil, status_log_id: 46746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.237] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:56:18.237] [INFO ] Incoming JSON payload: {"oid":"8a3c3cb1-3dad-4520-9641-b65ee71fe9be","sn":"98251226730001","uploadTime":"2026-07-09T20:59:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"ram_free_mb","value":"896","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T20:59:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20:59: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.reso (truncated) [2026-07-09 12:56:18.238] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8a3c3cb1-3dad-4520-9641-b65ee71fe9be", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:59:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:59:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:59:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:59:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "896"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:59:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:59:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:59:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:59: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-07-09T20:59:25Z", "vendor" => "morefun"} [2026-07-09 12:56:18.239] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:56:18.239] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:56:18.239] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:56:18.239] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=21.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-07-09 12:56:18.240] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 12:56:18.240] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:56:18.242] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:56:18.242] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:56:18.273] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:56:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:56:18.273] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:56:18.274] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:56:18.299] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:56:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:56:18.333] [DEBUG] QUERY OK db=33.3ms idle=25.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8a3c3cb1-3dad-4520-9641-b65ee71fe9be", "2026-07-09T20:59:25Z", ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:56:18.333] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46747, oid: "8a3c3cb1-3dad-4520-9641-b65ee71fe9be", upload_time: "2026-07-09T20:59:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]} [2026-07-09 12:56:18.334] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:59:25Z", "value" => "morefun"} [2026-07-09 12:56:18.357] [DEBUG] QUERY OK db=22.7ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "morefun", "vendor", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400135, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.357] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:59:25Z", "value" => "kiosk_launcher"} [2026-07-09 12:56:18.390] [DEBUG] QUERY OK db=32.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "kiosk_launcher", "model", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400136, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.390] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:59:25Z", "value" => "1.0"} [2026-07-09 12:56:18.415] [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-07-09T20:59:25Z", "1.0", "app_version", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400137, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.415] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:59:25Z", "value" => "13"} [2026-07-09 12:56:18.440] [DEBUG] QUERY OK db=23.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "13", "android_version", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400138, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.440] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "896"} [2026-07-09 12:56:18.465] [DEBUG] QUERY OK db=24.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "896", "ram_free_mb", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400139, itemkey: "ram_free_mb", value: "896", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.466] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:59:25Z", "value" => "WIFI"} [2026-07-09 12:56:18.491] [DEBUG] QUERY OK db=24.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "WIFI", "network_type", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400140, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.492] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:59:25Z", "value" => "true"} [2026-07-09 12:56:18.520] [DEBUG] QUERY OK db=27.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "true", "kiosk_active", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400141, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.520] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:59:25Z", "value" => ""} [2026-07-09 12:56:18.564] [DEBUG] QUERY OK db=41.7ms queue=1.0ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:59:25Z", "sim_operator", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400142, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.564] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.609] [DEBUG] QUERY OK db=44.5ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "UNKNOWN", "sim_number", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400143, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.653] [DEBUG] QUERY OK db=43.2ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "UNKNOWN", "sim_iccid", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400144, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.653] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.697] [DEBUG] QUERY OK db=42.8ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "UNKNOWN", "sim_imsi", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400145, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.697] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.737] [DEBUG] QUERY OK db=40.0ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "UNKNOWN", "sim_iccid2", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400146, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.738] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:59:25Z", "value" => "UNKNOWN"} [2026-07-09 12:56:18.808] [DEBUG] QUERY OK db=70.2ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "UNKNOWN", "sim_imsi2", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400147, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.809] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "11"} [2026-07-09 12:56:18.869] [DEBUG] QUERY OK db=60.0ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "11", "data_usage_mb", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400148, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.869] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:59:25Z", "value" => "0"} [2026-07-09 12:56:18.981] [DEBUG] QUERY OK db=110.7ms queue=0.3ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:25Z", "0", "mobile_data_mb", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:18.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400149, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:18.982] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20:59: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-07-09 12:56:19.020] [DEBUG] QUERY OK db=35.6ms idle=113.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59: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" <> ..., "installed_apps", 46747, ~N[2026-07-09 12:56:18], ~N[2026-07-09 12:56:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:19.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400150, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:59:25Z", message: nil, status_log_id: 46747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:18], updated_at: ~N[2026-07-09 12:56:18]}} [2026-07-09 12:56:47.585] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:56:47.585] [INFO ] Incoming JSON payload: {"oid":"71931d6a-f136-409e-8884-46b1b89b891a","sn":"98251226730001","uploadTime":"2026-07-09T20:59:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T20:59:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:56:47.586] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "71931d6a-f136-409e-8884-46b1b89b891a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:59:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T20:59:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:59:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:59:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:59:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:59:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:59:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T20:59:55Z", "vendor" => "morefun"} [2026-07-09 12:56:47.587] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:56:47.587] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:56:47.587] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:56:47.588] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1354.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-07-09 12:56:47.589] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=354.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-07-09 12:56:47.590] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:56:47.594] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms queue=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.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:56:47.595] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:56:47.623] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:56:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:56:47.623] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:56:47.625] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:56:47.659] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:56:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:56:47.683] [DEBUG] QUERY OK db=23.1ms queue=0.4ms idle=34.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "71931d6a-f136-409e-8884-46b1b89b891a", "2026-07-09T20:59:55Z", ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:56:47.684] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46748, oid: "71931d6a-f136-409e-8884-46b1b89b891a", upload_time: "2026-07-09T20:59:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]} [2026-07-09 12:56:47.684] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T20:59:55Z", "value" => "morefun"} [2026-07-09 12:56:47.700] [DEBUG] QUERY OK db=15.1ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "morefun", "vendor", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400151, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.701] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T20:59:55Z", "value" => "kiosk_launcher"} [2026-07-09 12:56:47.729] [DEBUG] QUERY OK db=27.6ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "kiosk_launcher", "model", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400152, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.729] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T20:59:55Z", "value" => "1.0"} [2026-07-09 12:56:47.767] [DEBUG] QUERY OK db=35.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-07-09T20:59:55Z", "1.0", "app_version", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400153, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.767] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T20:59:55Z", "value" => "13"} [2026-07-09 12:56:47.796] [DEBUG] QUERY OK db=28.2ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "13", "android_version", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400154, itemkey: "android_version", value: "13", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.796] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "889"} [2026-07-09 12:56:47.817] [DEBUG] QUERY OK db=19.8ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "889", "ram_free_mb", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400155, itemkey: "ram_free_mb", value: "889", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.817] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T20:59:55Z", "value" => "WIFI"} [2026-07-09 12:56:47.842] [DEBUG] QUERY OK db=23.8ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "WIFI", "network_type", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400156, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.842] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T20:59:55Z", "value" => "true"} [2026-07-09 12:56:47.876] [DEBUG] QUERY OK db=34.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "true", "kiosk_active", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400157, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.877] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T20:59:55Z", "value" => ""} [2026-07-09 12:56:47.900] [DEBUG] QUERY OK db=23.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T20:59:55Z", "sim_operator", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400158, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.901] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"} [2026-07-09 12:56:47.918] [DEBUG] QUERY OK db=16.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "UNKNOWN", "sim_number", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400159, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.919] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"} [2026-07-09 12:56:47.946] [DEBUG] QUERY OK db=26.3ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "UNKNOWN", "sim_iccid", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400160, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.946] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"} [2026-07-09 12:56:47.980] [DEBUG] QUERY OK db=33.0ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "UNKNOWN", "sim_imsi", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:47.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400161, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:47.980] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.003] [DEBUG] QUERY OK db=22.7ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "UNKNOWN", "sim_iccid2", 46748, ~N[2026-07-09 12:56:47], ~N[2026-07-09 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400162, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:47], updated_at: ~N[2026-07-09 12:56:47]}} [2026-07-09 12:56:48.004] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T20:59:55Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.017] [DEBUG] QUERY OK db=12.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "UNKNOWN", "sim_imsi2", 46748, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400163, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.017] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "11"} [2026-07-09 12:56:48.030] [DEBUG] QUERY OK db=12.8ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "11", "data_usage_mb", 46748, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400164, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.031] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T20:59:55Z", "value" => "0"} [2026-07-09 12:56:48.056] [DEBUG] QUERY OK db=24.1ms queue=0.1ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20:59:55Z", "0", "mobile_data_mb", 46748, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400165, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.057] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:56:48.088] [DEBUG] QUERY OK db=29.9ms queue=0.6ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46748, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400166, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T20:59:55Z", message: nil, status_log_id: 46748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.089] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:56:48.089] [INFO ] Incoming JSON payload: {"oid":"c02c32e8-96c8-4701-938e-698cb6458483","sn":"98250904730001","uploadTime":"2026-07-09T12:56:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:56:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:56:48.091] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c02c32e8-96c8-4701-938e-698cb6458483", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:56:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:56:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:56:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:56:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:56:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:56:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:56:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:56:47Z", "vendor" => "morefun"} [2026-07-09 12:56:48.092] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:56:48.092] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:56:48.092] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:56:48.092] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=36.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-07-09 12:56:48.093] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=5.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-07-09 12:56:48.093] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:56:48.095] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:56:48.095] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:56:48.125] [DEBUG] QUERY OK source="tms_terminals" db=30.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:56:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:56:48.126] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:56:48.127] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:56:48.139] [DEBUG] QUERY OK source="tms_terminals" db=11.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:56:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:56:48.166] [DEBUG] QUERY OK db=25.7ms queue=1.1ms idle=12.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "c02c32e8-96c8-4701-938e-698cb6458483", "2026-07-09T12:56:47Z", ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:56:48.167] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46749, oid: "c02c32e8-96c8-4701-938e-698cb6458483", upload_time: "2026-07-09T12:56:47Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]} [2026-07-09 12:56:48.167] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:56:47Z", "value" => "morefun"} [2026-07-09 12:56:48.196] [DEBUG] QUERY OK db=28.9ms queue=0.1ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "morefun", "vendor", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400167, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.197] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:56:47Z", "value" => "kiosk_launcher"} [2026-07-09 12:56:48.231] [DEBUG] QUERY OK db=34.0ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "kiosk_launcher", "model", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400168, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.232] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:56:47Z", "value" => "1.0"} [2026-07-09 12:56:48.243] [DEBUG] QUERY OK db=11.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "1.0", "app_version", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400169, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.244] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:56:47Z", "value" => "13"} [2026-07-09 12:56:48.266] [DEBUG] QUERY OK db=22.3ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "13", "android_version", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400170, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.267] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "1082"} [2026-07-09 12:56:48.292] [DEBUG] QUERY OK db=24.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "1082", "ram_free_mb", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400171, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.293] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:56:47Z", "value" => "WIFI"} [2026-07-09 12:56:48.326] [DEBUG] QUERY OK db=32.8ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "WIFI", "network_type", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400172, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.326] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:56:47Z", "value" => "true"} [2026-07-09 12:56:48.343] [DEBUG] QUERY OK db=16.8ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "true", "kiosk_active", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400173, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.344] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:56:47Z", "value" => ""} [2026-07-09 12:56:48.356] [DEBUG] QUERY OK db=11.4ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:56:47Z", "sim_operator", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400174, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.357] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.384] [DEBUG] QUERY OK db=27.0ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "UNKNOWN", "sim_number", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400175, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.384] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.410] [DEBUG] QUERY OK db=24.7ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "UNKNOWN", "sim_iccid", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400176, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.435] [DEBUG] QUERY OK db=24.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "UNKNOWN", "sim_imsi", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400177, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.435] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.462] [DEBUG] QUERY OK db=26.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "UNKNOWN", "sim_iccid2", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400178, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.463] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:56:47Z", "value" => "UNKNOWN"} [2026-07-09 12:56:48.474] [DEBUG] QUERY OK db=10.5ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "UNKNOWN", "sim_imsi2", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400179, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.474] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "27"} [2026-07-09 12:56:48.498] [DEBUG] QUERY OK db=23.8ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "27", "data_usage_mb", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400180, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.499] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:56:47Z", "value" => "0"} [2026-07-09 12:56:48.534] [DEBUG] QUERY OK db=33.7ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56:47Z", "0", "mobile_data_mb", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400181, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:56:48.535] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:56:48.646] [DEBUG] QUERY OK db=110.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:56: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46749, ~N[2026-07-09 12:56:48], ~N[2026-07-09 12:56:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:56:48.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400182, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:56:47Z", message: nil, status_log_id: 46749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:56:48], updated_at: ~N[2026-07-09 12:56:48]}} [2026-07-09 12:57:17.634] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:57:17.634] [INFO ] Incoming JSON payload: {"oid":"4a43fcd7-68ff-460d-84dd-73f2ae68812d","sn":"98251226730001","uploadTime":"2026-07-09T21:00:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:00:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:57:17.635] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4a43fcd7-68ff-460d-84dd-73f2ae68812d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:00:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:00:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:00:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:00:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:00:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:00:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:00:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:00:25Z", "vendor" => "morefun"} [2026-07-09 12:57:17.635] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:57:17.635] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:57:17.635] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:57:17.637] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.1ms idle=1300.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-07-09 12:57:17.637] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=299.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-07-09 12:57:17.638] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:57:17.639] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:17.639] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:57:17.658] [DEBUG] QUERY OK source="tms_terminals" db=17.9ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:57:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:17.658] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:57:17.660] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=19.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:697 [2026-07-09 12:57:17.684] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:17.708] [DEBUG] QUERY OK db=23.9ms idle=24.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4a43fcd7-68ff-460d-84dd-73f2ae68812d", "2026-07-09T21:00:25Z", ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:17.708] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46750, oid: "4a43fcd7-68ff-460d-84dd-73f2ae68812d", upload_time: "2026-07-09T21:00:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]} [2026-07-09 12:57:17.709] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:00:25Z", "value" => "morefun"} [2026-07-09 12:57:17.730] [DEBUG] QUERY OK db=19.7ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "morefun", "vendor", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400183, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.731] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:00:25Z", "value" => "kiosk_launcher"} [2026-07-09 12:57:17.747] [DEBUG] QUERY OK db=16.2ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "kiosk_launcher", "model", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400184, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.748] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:00:25Z", "value" => "1.0"} [2026-07-09 12:57:17.781] [DEBUG] QUERY OK db=32.7ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "1.0", "app_version", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400185, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.782] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:00:25Z", "value" => "13"} [2026-07-09 12:57:17.807] [DEBUG] QUERY OK db=25.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "13", "android_version", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400186, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.808] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "900"} [2026-07-09 12:57:17.826] [DEBUG] QUERY OK db=17.4ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "900", "ram_free_mb", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400187, itemkey: "ram_free_mb", value: "900", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.826] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:00:25Z", "value" => "WIFI"} [2026-07-09 12:57:17.837] [DEBUG] QUERY OK db=11.1ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "WIFI", "network_type", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400188, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.839] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:00:25Z", "value" => "true"} [2026-07-09 12:57:17.862] [DEBUG] QUERY OK db=22.4ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "true", "kiosk_active", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400189, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.863] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:00:25Z", "value" => ""} [2026-07-09 12:57:17.896] [DEBUG] QUERY OK db=33.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:00:25Z", "sim_operator", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400190, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.897] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"} [2026-07-09 12:57:17.917] [DEBUG] QUERY OK db=20.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "UNKNOWN", "sim_number", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400191, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.918] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"} [2026-07-09 12:57:17.930] [DEBUG] QUERY OK db=11.1ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "UNKNOWN", "sim_iccid", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400192, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.931] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"} [2026-07-09 12:57:17.945] [DEBUG] QUERY OK db=14.1ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "UNKNOWN", "sim_imsi", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400193, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.947] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"} [2026-07-09 12:57:17.976] [DEBUG] QUERY OK db=28.7ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "UNKNOWN", "sim_iccid2", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:17.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400194, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:17.977] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:00:25Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.001] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "UNKNOWN", "sim_imsi2", 46750, ~N[2026-07-09 12:57:17], ~N[2026-07-09 12:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400195, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:17], updated_at: ~N[2026-07-09 12:57:17]}} [2026-07-09 12:57:18.001] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "11"} [2026-07-09 12:57:18.022] [DEBUG] QUERY OK db=20.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "11", "data_usage_mb", 46750, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400196, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.023] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:00:25Z", "value" => "0"} [2026-07-09 12:57:18.040] [DEBUG] QUERY OK db=16.4ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:25Z", "0", "mobile_data_mb", 46750, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400197, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.040] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:57:18.063] [DEBUG] QUERY OK db=21.7ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46750, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400198, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:00:25Z", message: nil, status_log_id: 46750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.064] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:57:18.064] [INFO ] Incoming JSON payload: {"oid":"0ed6a94a-12c9-4e30-9d86-6b4e786e04c9","sn":"98250904730001","uploadTime":"2026-07-09T12:57:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:57:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:57:18.066] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0ed6a94a-12c9-4e30-9d86-6b4e786e04c9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:57:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:57:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:57:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:57:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:57:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:57:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:57:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:57:17Z", "vendor" => "morefun"} [2026-07-09 12:57:18.068] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:57:18.068] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:57:18.068] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:57:18.070] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=28.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-07-09 12:57:18.071] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=7.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-07-09 12:57:18.071] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:57:18.073] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:18.073] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:57:18.101] [DEBUG] QUERY OK source="tms_terminals" db=28.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:57:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:18.101] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:57:18.103] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:57:18.128] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=0.3ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:18.140] [DEBUG] QUERY OK db=11.3ms idle=25.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "0ed6a94a-12c9-4e30-9d86-6b4e786e04c9", "2026-07-09T12:57:17Z", ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:18.141] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46751, oid: "0ed6a94a-12c9-4e30-9d86-6b4e786e04c9", upload_time: "2026-07-09T12:57:17Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]} [2026-07-09 12:57:18.141] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:57:17Z", "value" => "morefun"} [2026-07-09 12:57:18.166] [DEBUG] QUERY OK db=24.3ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "morefun", "vendor", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400199, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.166] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:57:17Z", "value" => "kiosk_launcher"} [2026-07-09 12:57:18.200] [DEBUG] QUERY OK db=33.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "kiosk_launcher", "model", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400200, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.200] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:57:17Z", "value" => "1.0"} [2026-07-09 12:57:18.222] [DEBUG] QUERY OK db=21.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "1.0", "app_version", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400201, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.222] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:57:17Z", "value" => "13"} [2026-07-09 12:57:18.234] [DEBUG] QUERY OK db=11.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "13", "android_version", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400202, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.234] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "1080"} [2026-07-09 12:57:18.246] [DEBUG] QUERY OK db=11.4ms queue=0.1ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "1080", "ram_free_mb", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400203, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.247] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:57:17Z", "value" => "WIFI"} [2026-07-09 12:57:18.279] [DEBUG] QUERY OK db=31.3ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "WIFI", "network_type", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400204, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.279] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:57:17Z", "value" => "true"} [2026-07-09 12:57:18.313] [DEBUG] QUERY OK db=34.0ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "true", "kiosk_active", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400205, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.314] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:57:17Z", "value" => ""} [2026-07-09 12:57:18.329] [DEBUG] QUERY OK db=14.6ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:57:17Z", "sim_operator", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400206, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.329] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.342] [DEBUG] QUERY OK db=11.9ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "UNKNOWN", "sim_number", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400207, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.342] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.367] [DEBUG] QUERY OK db=24.9ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "UNKNOWN", "sim_iccid", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400208, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.368] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.401] [DEBUG] QUERY OK db=32.6ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "UNKNOWN", "sim_imsi", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400209, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.402] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.423] [DEBUG] QUERY OK db=21.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "UNKNOWN", "sim_iccid2", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400210, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.424] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:57:17Z", "value" => "UNKNOWN"} [2026-07-09 12:57:18.439] [DEBUG] QUERY OK db=13.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-07-09T12:57:17Z", "UNKNOWN", "sim_imsi2", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400211, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.440] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "27"} [2026-07-09 12:57:18.454] [DEBUG] QUERY OK db=13.8ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "27", "data_usage_mb", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400212, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.454] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:57:17Z", "value" => "0"} [2026-07-09 12:57:18.476] [DEBUG] QUERY OK db=21.6ms queue=0.1ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:17Z", "0", "mobile_data_mb", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400213, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:18.477] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:57:18.502] [DEBUG] QUERY OK db=23.9ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46751, ~N[2026-07-09 12:57:18], ~N[2026-07-09 12:57:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:18.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400214, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:57:17Z", message: nil, status_log_id: 46751, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:18], updated_at: ~N[2026-07-09 12:57:18]}} [2026-07-09 12:57:47.729] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:57:47.729] [INFO ] Incoming JSON payload: {"oid":"feac71da-9d4c-449c-9b11-b9c3d56763a1","sn":"98251226730001","uploadTime":"2026-07-09T21:00:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:00:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:57:47.730] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "feac71da-9d4c-449c-9b11-b9c3d56763a1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:00:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:00:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:00:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:00:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:00:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:00:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:00:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:00:56Z", "vendor" => "morefun"} [2026-07-09 12:57:47.730] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:57:47.730] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:57:47.730] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:57:47.731] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=869.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-07-09 12:57:47.732] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=303.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-07-09 12:57:47.732] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:57:47.733] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:47.733] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:57:47.761] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:57:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:47.761] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:57:47.762] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:57:47.824] [DEBUG] QUERY OK source="tms_terminals" db=61.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:47.846] [DEBUG] QUERY OK db=21.4ms idle=61.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "feac71da-9d4c-449c-9b11-b9c3d56763a1", "2026-07-09T21:00:56Z", ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:47.846] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46752, oid: "feac71da-9d4c-449c-9b11-b9c3d56763a1", upload_time: "2026-07-09T21:00:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]} [2026-07-09 12:57:47.846] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:00:56Z", "value" => "morefun"} [2026-07-09 12:57:47.869] [DEBUG] QUERY OK db=22.7ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "morefun", "vendor", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400215, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.871] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:00:56Z", "value" => "kiosk_launcher"} [2026-07-09 12:57:47.905] [DEBUG] QUERY OK db=33.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "kiosk_launcher", "model", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400216, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.905] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:00:56Z", "value" => "1.0"} [2026-07-09 12:57:47.929] [DEBUG] QUERY OK db=23.3ms queue=0.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "1.0", "app_version", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400217, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.930] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:00:56Z", "value" => "13"} [2026-07-09 12:57:47.944] [DEBUG] QUERY OK db=13.6ms queue=0.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "13", "android_version", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400218, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.945] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "892"} [2026-07-09 12:57:47.965] [DEBUG] QUERY OK db=19.1ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "892", "ram_free_mb", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400219, itemkey: "ram_free_mb", value: "892", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.966] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:00:56Z", "value" => "WIFI"} [2026-07-09 12:57:47.994] [DEBUG] QUERY OK db=28.3ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "WIFI", "network_type", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:47.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400220, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:47.995] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:00:56Z", "value" => "true"} [2026-07-09 12:57:48.027] [DEBUG] QUERY OK db=31.9ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "true", "kiosk_active", 46752, ~N[2026-07-09 12:57:47], ~N[2026-07-09 12:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400221, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:47], updated_at: ~N[2026-07-09 12:57:47]}} [2026-07-09 12:57:48.028] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:00:56Z", "value" => ""} [2026-07-09 12:57:48.050] [DEBUG] QUERY OK db=21.7ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:00:56Z", "sim_operator", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400222, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.050] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.060] [DEBUG] QUERY OK db=8.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "UNKNOWN", "sim_number", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400223, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.060] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.098] [DEBUG] QUERY OK db=37.3ms queue=0.3ms idle=10.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "UNKNOWN", "sim_iccid", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400224, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.098] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.132] [DEBUG] QUERY OK db=33.0ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "UNKNOWN", "sim_imsi", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400225, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.132] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.165] [DEBUG] QUERY OK db=31.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "UNKNOWN", "sim_iccid2", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400226, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.165] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:00:56Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.176] [DEBUG] QUERY OK db=10.3ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "UNKNOWN", "sim_imsi2", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400227, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.176] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "11"} [2026-07-09 12:57:48.205] [DEBUG] QUERY OK db=27.9ms queue=0.4ms idle=11.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "11", "data_usage_mb", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400228, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.205] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:00:56Z", "value" => "0"} [2026-07-09 12:57:48.231] [DEBUG] QUERY OK db=24.8ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:00:56Z", "0", "mobile_data_mb", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400229, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.232] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:57:48.268] [DEBUG] QUERY OK db=35.3ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46752, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400230, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:00:56Z", message: nil, status_log_id: 46752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.269] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:57:48.269] [INFO ] Incoming JSON payload: {"oid":"3e5a1509-1179-413f-8376-850beb59f17b","sn":"98250904730001","uploadTime":"2026-07-09T12:57:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:57:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:57:48.270] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3e5a1509-1179-413f-8376-850beb59f17b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:57:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:57:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:57:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:57:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:57:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:57:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:57:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:57:47Z", "vendor" => "morefun"} [2026-07-09 12:57:48.270] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:57:48.270] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:57:48.270] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:57:48.271] [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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 12:57:48.272] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 12:57:48.272] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:57:48.273] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:48.274] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:57:48.293] [DEBUG] QUERY OK source="tms_terminals" db=18.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:57:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:48.293] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:57:48.294] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:57:48.312] [DEBUG] QUERY OK source="tms_terminals" db=17.4ms queue=0.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:48.346] [DEBUG] QUERY OK db=33.7ms idle=18.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "3e5a1509-1179-413f-8376-850beb59f17b", "2026-07-09T12:57:47Z", ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:48.347] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46753, oid: "3e5a1509-1179-413f-8376-850beb59f17b", upload_time: "2026-07-09T12:57:47Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]} [2026-07-09 12:57:48.347] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:57:47Z", "value" => "morefun"} [2026-07-09 12:57:48.369] [DEBUG] QUERY OK db=22.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "morefun", "vendor", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400231, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.370] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:57:47Z", "value" => "kiosk_launcher"} [2026-07-09 12:57:48.379] [DEBUG] QUERY OK db=9.0ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "kiosk_launcher", "model", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400232, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.380] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:57:47Z", "value" => "1.0"} [2026-07-09 12:57:48.393] [DEBUG] QUERY OK db=12.7ms idle=11.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "1.0", "app_version", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400233, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.395] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:57:47Z", "value" => "13"} [2026-07-09 12:57:48.420] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "13", "android_version", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400234, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.421] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "1080"} [2026-07-09 12:57:48.454] [DEBUG] QUERY OK db=33.1ms queue=0.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "1080", "ram_free_mb", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400235, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.455] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:57:47Z", "value" => "WIFI"} [2026-07-09 12:57:48.471] [DEBUG] QUERY OK db=14.9ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "WIFI", "network_type", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400236, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.472] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:57:47Z", "value" => "true"} [2026-07-09 12:57:48.485] [DEBUG] QUERY OK db=13.4ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "true", "kiosk_active", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400237, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.486] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:57:47Z", "value" => ""} [2026-07-09 12:57:48.505] [DEBUG] QUERY OK db=18.8ms queue=0.1ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:57:47Z", "sim_operator", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400238, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.505] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.528] [DEBUG] QUERY OK db=21.8ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "UNKNOWN", "sim_number", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400239, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.528] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.582] [DEBUG] QUERY OK db=53.1ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "UNKNOWN", "sim_iccid", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400240, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.582] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.630] [DEBUG] QUERY OK db=47.3ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "UNKNOWN", "sim_imsi", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400241, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.631] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.663] [DEBUG] QUERY OK db=32.5ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "UNKNOWN", "sim_iccid2", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400242, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.664] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:57:47Z", "value" => "UNKNOWN"} [2026-07-09 12:57:48.706] [DEBUG] QUERY OK db=41.7ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "UNKNOWN", "sim_imsi2", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400243, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.706] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "27"} [2026-07-09 12:57:48.784] [DEBUG] QUERY OK db=77.3ms queue=0.2ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "27", "data_usage_mb", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400244, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.785] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:57:47Z", "value" => "0"} [2026-07-09 12:57:48.821] [DEBUG] QUERY OK db=36.0ms idle=78.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:47Z", "0", "mobile_data_mb", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400245, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.823] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:57:48.866] [DEBUG] QUERY OK db=41.5ms queue=0.5ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46753, ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:48.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400246, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:57:47Z", message: nil, status_log_id: 46753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:48], updated_at: ~N[2026-07-09 12:57:48]}} [2026-07-09 12:57:48.867] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 12:57:48.874] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T12:57:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T12:57:48Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T12:57:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T12:57:48Z","value":"11"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T12:57:48Z","value":"66"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":"1.0.0"},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":"1.0.0"},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T12:57:48Z","vendor":"softpos"} [2026-07-09 12:57:48.875] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T12:57:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T12:57:48Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T12:57:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T12:57:48Z", "value" => "11"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T12:57:48Z", "value" => "66"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T12:57:48Z", "vendor" => "softpos"} [2026-07-09 12:57:48.876] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "1.0.0", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 12:57:48.876] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 12:57:48.876] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 12:57:48.881] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=55.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 12:57:48.883] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.6ms 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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 12:57:48.886] [DEBUG] QUERY OK source="parameter_template_values" db=2.4ms queue=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` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 12:57:48.894] [DEBUG] QUERY OK source="parameter_definitions" db=3.8ms queue=1.2ms 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-07-09 12:57:48.897] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.2ms idle=9.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 12:57:48.936] [DEBUG] QUERY OK source="pos_merchant" db=38.4ms idle=2.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 12:57:48.942] [DEBUG] QUERY OK db=1.1ms queue=5.0ms idle=1094.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 ["513940210000000"] [2026-07-09 12:57:48.942] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 12:57:48.944] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms queue=0.2ms idle=46.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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 12:57:48.946] [DEBUG] QUERY OK source="address" db=1.7ms idle=8.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` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 12:57:48.946] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 12:57:48.949] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 12:57:48.970] [DEBUG] QUERY OK db=20.2ms idle=5.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", "040df57e75b847b169755b9ce4464ccac43576de3bc70e0b411168f80abfaef2", 707, 969, ~U[2026-07-09 12:57:48Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 12:57:48.970] [INFO ] AutoPushService: Created push log 33403 for MF919 params.zip [2026-07-09 12:57:48.971] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 707, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 12:57:48.971] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 12:57:48.971] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 12:57:48.972] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 12:57:48.973] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 12:57:49.010] [DEBUG] QUERY OK db=35.9ms 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`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3ebe6acb85445a9df4e39ce7e816c7753114153273979515f6ef85b000953503", 37, 2334, ~U[2026-07-09 12:57:48Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 12:57:48], ~N[2026-07-09 12:57:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 12:57:49.010] [INFO ] AutoPushService: Created push log 33404 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 12:57:49.010] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 37, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 12:57:49.011] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 12:57:49.011] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 12:57:49.013] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=39.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 12:57:49.014] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 12:57:49.015] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.3ms 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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 12:57:49.015] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 12:57:49.017] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 12:57:49.017] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 12:57:49.017] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 12:57:49.018] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 12:57:49.018] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 12:57:49.021] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=5.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:49.021] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 12:57:49.079] [DEBUG] QUERY OK source="tms_terminals" db=13.7ms queue=42.0ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.0", "1.0.0", "1.0.0", ~N[2026-07-09 12:57:49], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:49.081] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=59.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-09 12:57:49.082] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-09 12:57:49.082] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 12:57:49.084] [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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:57:49.152] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms queue=41.3ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:49], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:49.169] [DEBUG] QUERY OK db=17.4ms idle=67.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T12:57:48Z", ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:49.170] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46754, oid: "organization_id", upload_time: "2026-07-09T12:57:48Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]} [2026-07-09 12:57:49.170] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T12:57:48Z", "value" => "online"} [2026-07-09 12:57:49.183] [DEBUG] QUERY OK db=13.0ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T12:57:48Z", "online", "status", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400247, itemkey: "status", value: "online", timestamp: "2026-07-09T12:57:48Z", message: "Terminal status update", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.184] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 12:57:49.184] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T12:57:48Z", "value" => "100"} [2026-07-09 12:57:49.197] [DEBUG] QUERY OK db=13.2ms queue=0.1ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T12:57:48Z", "100", "battery", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400248, itemkey: "battery", value: "100", timestamp: "2026-07-09T12:57:48Z", message: "Battery level", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.198] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T12:57:48Z", "value" => "online"} [2026-07-09 12:57:49.211] [DEBUG] QUERY OK db=12.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-07-09T12:57:48Z", "online", "network", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400249, itemkey: "network", value: "online", timestamp: "2026-07-09T12:57:48Z", message: "Network connectivity", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.212] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 12:57:49.212] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T12:57:48Z", "value" => "11"} [2026-07-09 12:57:49.226] [DEBUG] QUERY OK db=13.2ms 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-07-09T12:57:48Z", "11", "cpu", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400250, itemkey: "cpu", value: "11", timestamp: "2026-07-09T12:57:48Z", message: "CPU usage percentage", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.226] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T12:57:48Z", "value" => "66"} [2026-07-09 12:57:49.243] [DEBUG] QUERY OK db=16.8ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T12:57:48Z", "66", "memory", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400251, itemkey: "memory", value: "66", timestamp: "2026-07-09T12:57:48Z", message: "Memory usage percentage", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.244] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 12:57:49.298] [DEBUG] QUERY OK db=13.2ms queue=40.5ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["EMV Config", "1.0.0", "emv_config", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400252, itemkey: "emv_config", value: "1.0.0", timestamp: nil, message: "EMV Config", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.299] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 12:57:49.355] [DEBUG] QUERY OK db=13.2ms queue=42.3ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Parameter config", "1.0.0", "parameter_config", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400253, itemkey: "parameter_config", value: "1.0.0", timestamp: nil, message: "Parameter config", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.355] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 12:57:49.412] [DEBUG] QUERY OK db=14.5ms queue=41.6ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400254, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.413] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 12:57:49.475] [DEBUG] QUERY OK db=19.9ms queue=42.1ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46754, ~N[2026-07-09 12:57:49], ~N[2026-07-09 12:57:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:49.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400255, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:49], updated_at: ~N[2026-07-09 12:57:49]}} [2026-07-09 12:57:49.476] [WARN ] Unexpected async result [2026-07-09 12:57:49.476] [WARN ] Unexpected async result [2026-07-09 12:57:57.997] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 12:57:57.998] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-09T12:57:56Z","org.device":[{"itemkey":"battery","value":68,"timestamp":"2026-07-09T12:57:56Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-09T12:57:56Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-09T12:57:56Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-09T12:57:56Z","message":""}]} [2026-07-09 12:57:57.998] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => 68}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T12:57:56Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-09T12:57:56Z"} [2026-07-09 12:57:57.998] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:57:57.999] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=539.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:57:57.999] [INFO ] Terminal updated: 61251020798002 [2026-07-09 12:57:58.042] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=138.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:57:58], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:57:58.043] [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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:57:58.072] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:57:58], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:57:58.092] [DEBUG] QUERY OK db=18.8ms queue=0.4ms idle=29.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-09T12:57:56Z", ~N[2026-07-09 12:57:58], ~N[2026-07-09 12:57:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:57:58.092] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46755, oid: "org-id-placeholder", upload_time: "2026-07-09T12:57:56Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:58], updated_at: ~N[2026-07-09 12:57:58]} [2026-07-09 12:57:58.092] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => 68} [2026-07-09 12:57:58.157] [DEBUG] QUERY OK db=23.0ms queue=40.9ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:56Z", "68", "battery", 46755, ~N[2026-07-09 12:57:58], ~N[2026-07-09 12:57:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:58.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400256, itemkey: "battery", value: "68", timestamp: "2026-07-09T12:57:56Z", message: nil, status_log_id: 46755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:58], updated_at: ~N[2026-07-09 12:57:58]}} [2026-07-09 12:57:58.157] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T12:57:56Z", "value" => 50} [2026-07-09 12:57:58.191] [DEBUG] QUERY OK db=31.8ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-09T12:57:56Z", "50", "memory", 46755, ~N[2026-07-09 12:57:58], ~N[2026-07-09 12:57:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:58.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400257, itemkey: "memory", value: "50", timestamp: "2026-07-09T12:57:56Z", message: "Normal", status_log_id: 46755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:58], updated_at: ~N[2026-07-09 12:57:58]}} [2026-07-09 12:57:58.191] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => 50} [2026-07-09 12:57:58.210] [DEBUG] QUERY OK db=18.5ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:56Z", "50", "cpu", 46755, ~N[2026-07-09 12:57:58], ~N[2026-07-09 12:57:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:58.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400258, itemkey: "cpu", value: "50", timestamp: "2026-07-09T12:57:56Z", message: nil, status_log_id: 46755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:58], updated_at: ~N[2026-07-09 12:57:58]}} [2026-07-09 12:57:58.211] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T12:57:56Z", "value" => "online"} [2026-07-09 12:57:58.264] [DEBUG] QUERY OK db=11.7ms queue=41.3ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:57:56Z", "online", "network", 46755, ~N[2026-07-09 12:57:58], ~N[2026-07-09 12:57:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:57:58.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400259, itemkey: "network", value: "online", timestamp: "2026-07-09T12:57:56Z", message: nil, status_log_id: 46755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:57:58], updated_at: ~N[2026-07-09 12:57:58]}} [2026-07-09 12:57:58.265] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-09 12:58:17.817] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:58:17.817] [INFO ] Incoming JSON payload: {"oid":"c4052c6e-379a-415f-ba98-cda299271dc5","sn":"98251226730001","uploadTime":"2026-07-09T21:01:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:01:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:58:17.820] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c4052c6e-379a-415f-ba98-cda299271dc5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:01:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:01:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:01:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:01:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:01:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:01:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:01:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:01:26Z", "vendor" => "morefun"} [2026-07-09 12:58:17.820] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:58:17.820] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:58:17.820] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:58:17.822] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1293.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-07-09 12:58:17.822] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=293.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-07-09 12:58:17.823] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:58:17.824] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:58:17.824] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:58:17.866] [DEBUG] QUERY OK source="tms_terminals" db=41.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:58:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:58:17.866] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:58:17.867] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=42.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:697 [2026-07-09 12:58:17.885] [DEBUG] QUERY OK source="tms_terminals" db=17.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:58:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:58:17.910] [DEBUG] QUERY OK db=24.1ms idle=18.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c4052c6e-379a-415f-ba98-cda299271dc5", "2026-07-09T21:01:26Z", ~N[2026-07-09 12:58:17], ~N[2026-07-09 12:58:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:58:17.910] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46756, oid: "c4052c6e-379a-415f-ba98-cda299271dc5", upload_time: "2026-07-09T21:01:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:17], updated_at: ~N[2026-07-09 12:58:17]} [2026-07-09 12:58:17.910] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:01:26Z", "value" => "morefun"} [2026-07-09 12:58:17.943] [DEBUG] QUERY OK db=31.8ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "morefun", "vendor", 46756, ~N[2026-07-09 12:58:17], ~N[2026-07-09 12:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:17.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400260, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:17], updated_at: ~N[2026-07-09 12:58:17]}} [2026-07-09 12:58:17.943] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:01:26Z", "value" => "kiosk_launcher"} [2026-07-09 12:58:17.966] [DEBUG] QUERY OK db=22.4ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "kiosk_launcher", "model", 46756, ~N[2026-07-09 12:58:17], ~N[2026-07-09 12:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:17.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400261, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:17], updated_at: ~N[2026-07-09 12:58:17]}} [2026-07-09 12:58:17.967] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:01:26Z", "value" => "1.0"} [2026-07-09 12:58:17.989] [DEBUG] QUERY OK db=21.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "1.0", "app_version", 46756, ~N[2026-07-09 12:58:17], ~N[2026-07-09 12:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:17.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400262, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:17], updated_at: ~N[2026-07-09 12:58:17]}} [2026-07-09 12:58:17.989] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:01:26Z", "value" => "13"} [2026-07-09 12:58:18.014] [DEBUG] QUERY OK db=25.0ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "13", "android_version", 46756, ~N[2026-07-09 12:58:17], ~N[2026-07-09 12:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400263, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:17], updated_at: ~N[2026-07-09 12:58:17]}} [2026-07-09 12:58:18.015] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "884"} [2026-07-09 12:58:18.038] [DEBUG] QUERY OK db=22.9ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "884", "ram_free_mb", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400264, itemkey: "ram_free_mb", value: "884", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.038] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:01:26Z", "value" => "WIFI"} [2026-07-09 12:58:18.062] [DEBUG] QUERY OK db=22.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "WIFI", "network_type", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400265, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.062] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:01:26Z", "value" => "true"} [2026-07-09 12:58:18.097] [DEBUG] QUERY OK db=34.3ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "true", "kiosk_active", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400266, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.097] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:01:26Z", "value" => ""} [2026-07-09 12:58:18.156] [DEBUG] QUERY OK db=16.9ms queue=41.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:01:26Z", "sim_operator", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400267, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.157] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.180] [DEBUG] QUERY OK db=23.0ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "UNKNOWN", "sim_number", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400268, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.181] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.214] [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-07-09T21:01:26Z", "UNKNOWN", "sim_iccid", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400269, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.214] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.237] [DEBUG] QUERY OK db=22.9ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "UNKNOWN", "sim_imsi", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400270, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.238] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.261] [DEBUG] QUERY OK db=22.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "UNKNOWN", "sim_iccid2", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400271, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.261] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:01:26Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.283] [DEBUG] QUERY OK db=20.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "UNKNOWN", "sim_imsi2", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400272, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.283] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "11"} [2026-07-09 12:58:18.306] [DEBUG] QUERY OK db=22.9ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "11", "data_usage_mb", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400273, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.307] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:01:26Z", "value" => "0"} [2026-07-09 12:58:18.331] [DEBUG] QUERY OK db=23.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:26Z", "0", "mobile_data_mb", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400274, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.332] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:58:18.366] [DEBUG] QUERY OK db=33.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46756, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400275, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:01:26Z", message: nil, status_log_id: 46756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.367] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:58:18.367] [INFO ] Incoming JSON payload: {"oid":"624a61d5-f802-4d32-8b50-491ab8e3cc2d","sn":"98250904730001","uploadTime":"2026-07-09T12:58:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:58:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:58: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:58:18.369] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "624a61d5-f802-4d32-8b50-491ab8e3cc2d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:58:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:58:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:58:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:58:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:58:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:58:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:58:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:58: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:58:17Z", "vendor" => "morefun"} [2026-07-09 12:58:18.369] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:58:18.369] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:58:18.370] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:58:18.371] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=39.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-07-09 12:58:18.372] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.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-07-09 12:58:18.372] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:58:18.373] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:58:18.373] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:58:18.394] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:58:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:58:18.394] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:58:18.396] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=21.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:58:18.419] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:58:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:58:18.443] [DEBUG] QUERY OK db=23.0ms idle=23.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "624a61d5-f802-4d32-8b50-491ab8e3cc2d", "2026-07-09T12:58:17Z", ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:58:18.443] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46757, oid: "624a61d5-f802-4d32-8b50-491ab8e3cc2d", upload_time: "2026-07-09T12:58:17Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]} [2026-07-09 12:58:18.443] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:58:17Z", "value" => "morefun"} [2026-07-09 12:58:18.466] [DEBUG] QUERY OK db=22.9ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "morefun", "vendor", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400276, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.467] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:58:17Z", "value" => "kiosk_launcher"} [2026-07-09 12:58:18.489] [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-07-09T12:58:17Z", "kiosk_launcher", "model", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400277, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.490] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:58:17Z", "value" => "1.0"} [2026-07-09 12:58:18.510] [DEBUG] QUERY OK db=19.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "1.0", "app_version", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400278, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.510] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:58:17Z", "value" => "13"} [2026-07-09 12:58:18.559] [DEBUG] QUERY OK db=48.1ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "13", "android_version", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400279, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.560] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "1081"} [2026-07-09 12:58:18.602] [DEBUG] QUERY OK db=42.4ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "1081", "ram_free_mb", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400280, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.603] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:58:17Z", "value" => "WIFI"} [2026-07-09 12:58:18.653] [DEBUG] QUERY OK db=49.9ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "WIFI", "network_type", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400281, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.654] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:58:17Z", "value" => "true"} [2026-07-09 12:58:18.699] [DEBUG] QUERY OK db=44.9ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "true", "kiosk_active", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400282, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.699] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:58:17Z", "value" => ""} [2026-07-09 12:58:18.718] [DEBUG] QUERY OK db=17.1ms queue=0.6ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:58:17Z", "sim_operator", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400283, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.718] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.769] [DEBUG] QUERY OK db=51.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "UNKNOWN", "sim_number", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400284, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.770] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.805] [DEBUG] QUERY OK db=34.6ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "UNKNOWN", "sim_iccid", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400285, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.806] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.851] [DEBUG] QUERY OK db=45.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "UNKNOWN", "sim_imsi", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400286, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.852] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.892] [DEBUG] QUERY OK db=39.8ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "UNKNOWN", "sim_iccid2", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400287, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.892] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:58:17Z", "value" => "UNKNOWN"} [2026-07-09 12:58:18.928] [DEBUG] QUERY OK db=34.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "UNKNOWN", "sim_imsi2", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400288, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.928] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "27"} [2026-07-09 12:58:18.950] [DEBUG] QUERY OK db=21.4ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "27", "data_usage_mb", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400289, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.950] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:58:17Z", "value" => "0"} [2026-07-09 12:58:18.989] [DEBUG] QUERY OK db=38.9ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:17Z", "0", "mobile_data_mb", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:18.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400290, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:18.990] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:58: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:58:19.033] [DEBUG] QUERY OK db=42.1ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46757, ~N[2026-07-09 12:58:18], ~N[2026-07-09 12:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:19.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400291, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:58:17Z", message: nil, status_log_id: 46757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:18], updated_at: ~N[2026-07-09 12:58:18]}} [2026-07-09 12:58:48.145] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:58:48.145] [INFO ] Incoming JSON payload: {"oid":"0f7120f1-681a-4a87-a962-7e4ff4051505","sn":"98250904730001","uploadTime":"2026-07-09T12:58:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"ram_free_mb","value":"1087","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:58:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:58:48.147] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0f7120f1-681a-4a87-a962-7e4ff4051505", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:58:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:58:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:58:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:58:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "1087"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:58:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:58:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:58:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:58:47Z", "vendor" => "morefun"} [2026-07-09 12:58:48.147] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:58:48.147] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:58:48.148] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:58:48.149] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=535.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-07-09 12:58:48.150] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=286.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-07-09 12:58:48.150] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:58:48.153] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:58:48.154] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:58:48.184] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:58:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:58:48.184] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:58:48.185] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=30.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:58:48.210] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:58:48], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:58:48.228] [DEBUG] QUERY OK db=17.8ms idle=25.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "0f7120f1-681a-4a87-a962-7e4ff4051505", "2026-07-09T12:58:47Z", ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:58:48.229] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46758, oid: "0f7120f1-681a-4a87-a962-7e4ff4051505", upload_time: "2026-07-09T12:58:47Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]} [2026-07-09 12:58:48.229] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:58:47Z", "value" => "morefun"} [2026-07-09 12:58:48.243] [DEBUG] QUERY OK db=14.0ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "morefun", "vendor", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400292, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.244] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:58:47Z", "value" => "kiosk_launcher"} [2026-07-09 12:58:48.257] [DEBUG] QUERY OK db=12.7ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "kiosk_launcher", "model", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400293, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.257] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:58:47Z", "value" => "1.0"} [2026-07-09 12:58:48.293] [DEBUG] QUERY OK db=35.7ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "1.0", "app_version", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400294, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.294] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:58:47Z", "value" => "13"} [2026-07-09 12:58:48.319] [DEBUG] QUERY OK db=24.5ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "13", "android_version", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400295, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.321] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "1087"} [2026-07-09 12:58:48.339] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "1087", "ram_free_mb", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400296, itemkey: "ram_free_mb", value: "1087", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.340] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:58:47Z", "value" => "WIFI"} [2026-07-09 12:58:48.355] [DEBUG] QUERY OK db=14.9ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "WIFI", "network_type", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400297, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.356] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:58:47Z", "value" => "true"} [2026-07-09 12:58:48.385] [DEBUG] QUERY OK db=29.0ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "true", "kiosk_active", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400298, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.386] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:58:47Z", "value" => ""} [2026-07-09 12:58:48.410] [DEBUG] QUERY OK db=24.1ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:58:47Z", "sim_operator", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400299, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.411] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.433] [DEBUG] QUERY OK db=21.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "UNKNOWN", "sim_number", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400300, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.433] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.450] [DEBUG] QUERY OK db=16.0ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "UNKNOWN", "sim_iccid", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400301, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.451] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.484] [DEBUG] QUERY OK db=32.8ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "UNKNOWN", "sim_imsi", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400302, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.485] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.510] [DEBUG] QUERY OK db=24.7ms queue=0.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "UNKNOWN", "sim_iccid2", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400303, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.510] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:58:47Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.533] [DEBUG] QUERY OK db=21.9ms queue=0.2ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "UNKNOWN", "sim_imsi2", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400304, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.534] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "27"} [2026-07-09 12:58:48.562] [DEBUG] QUERY OK db=27.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "27", "data_usage_mb", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400305, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.562] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:58:47Z", "value" => "0"} [2026-07-09 12:58:48.642] [DEBUG] QUERY OK db=79.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:58:47Z", "0", "mobile_data_mb", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400306, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.643] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:58:48.682] [DEBUG] QUERY OK db=35.7ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46758, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400307, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:58:47Z", message: nil, status_log_id: 46758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.683] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:58:48.683] [INFO ] Incoming JSON payload: {"oid":"e0419da3-aa9a-4e7a-96c2-2358d3f7b12b","sn":"98251226730001","uploadTime":"2026-07-09T21:01:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"ram_free_mb","value":"896","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:01:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:58:48.684] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e0419da3-aa9a-4e7a-96c2-2358d3f7b12b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:01:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:01:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:01:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:01:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "896"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:01:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:01:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:01:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:01:56Z", "vendor" => "morefun"} [2026-07-09 12:58:48.684] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:58:48.684] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:58:48.684] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:58:48.686] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=42.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-07-09 12:58:48.686] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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-07-09 12:58:48.687] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:58:48.688] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:58:48.688] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:58:48.700] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:58:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:58:48.700] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:58:48.701] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:58:48.724] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:58:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:58:48.754] [DEBUG] QUERY OK db=28.5ms queue=0.1ms idle=24.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e0419da3-aa9a-4e7a-96c2-2358d3f7b12b", "2026-07-09T21:01:56Z", ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:58:48.754] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46759, oid: "e0419da3-aa9a-4e7a-96c2-2358d3f7b12b", upload_time: "2026-07-09T21:01:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]} [2026-07-09 12:58:48.754] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:01:56Z", "value" => "morefun"} [2026-07-09 12:58:48.771] [DEBUG] QUERY OK db=16.1ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "morefun", "vendor", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400308, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.771] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:01:56Z", "value" => "kiosk_launcher"} [2026-07-09 12:58:48.797] [DEBUG] QUERY OK db=25.4ms queue=0.1ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "kiosk_launcher", "model", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400309, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.798] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:01:56Z", "value" => "1.0"} [2026-07-09 12:58:48.822] [DEBUG] QUERY OK db=23.4ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "1.0", "app_version", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400310, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.823] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:01:56Z", "value" => "13"} [2026-07-09 12:58:48.854] [DEBUG] QUERY OK db=30.8ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "13", "android_version", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400311, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.855] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "896"} [2026-07-09 12:58:48.866] [DEBUG] QUERY OK db=11.2ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "896", "ram_free_mb", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400312, itemkey: "ram_free_mb", value: "896", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.866] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:01:56Z", "value" => "WIFI"} [2026-07-09 12:58:48.881] [DEBUG] QUERY OK db=13.8ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "WIFI", "network_type", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400313, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.881] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:01:56Z", "value" => "true"} [2026-07-09 12:58:48.902] [DEBUG] QUERY OK db=20.4ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "true", "kiosk_active", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400314, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.903] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:01:56Z", "value" => ""} [2026-07-09 12:58:48.927] [DEBUG] QUERY OK db=23.5ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:01:56Z", "sim_operator", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400315, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.927] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.957] [DEBUG] QUERY OK db=29.3ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "UNKNOWN", "sim_number", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400316, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.957] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.976] [DEBUG] QUERY OK db=18.6ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "UNKNOWN", "sim_iccid", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400317, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.977] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"} [2026-07-09 12:58:48.994] [DEBUG] QUERY OK db=17.2ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "UNKNOWN", "sim_imsi", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:48.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400318, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:48.995] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"} [2026-07-09 12:58:49.019] [DEBUG] QUERY OK db=23.3ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "UNKNOWN", "sim_iccid2", 46759, ~N[2026-07-09 12:58:48], ~N[2026-07-09 12:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:49.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400319, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:48], updated_at: ~N[2026-07-09 12:58:48]}} [2026-07-09 12:58:49.020] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:01:56Z", "value" => "UNKNOWN"} [2026-07-09 12:58:49.056] [DEBUG] QUERY OK db=35.8ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "UNKNOWN", "sim_imsi2", 46759, ~N[2026-07-09 12:58:49], ~N[2026-07-09 12:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:49.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400320, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:49], updated_at: ~N[2026-07-09 12:58:49]}} [2026-07-09 12:58:49.056] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "11"} [2026-07-09 12:58:49.071] [DEBUG] QUERY OK db=13.2ms queue=1.2ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "11", "data_usage_mb", 46759, ~N[2026-07-09 12:58:49], ~N[2026-07-09 12:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:49.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400321, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:49], updated_at: ~N[2026-07-09 12:58:49]}} [2026-07-09 12:58:49.072] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:01:56Z", "value" => "0"} [2026-07-09 12:58:49.087] [DEBUG] QUERY OK db=14.5ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01:56Z", "0", "mobile_data_mb", 46759, ~N[2026-07-09 12:58:49], ~N[2026-07-09 12:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:49.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400322, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:49], updated_at: ~N[2026-07-09 12:58:49]}} [2026-07-09 12:58:49.092] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:58:49.116] [DEBUG] QUERY OK db=23.0ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:01: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46759, ~N[2026-07-09 12:58:49], ~N[2026-07-09 12:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:58:49.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400323, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:01:56Z", message: nil, status_log_id: 46759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:58:49], updated_at: ~N[2026-07-09 12:58:49]}} [2026-07-09 12:59:18.261] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:59:18.261] [INFO ] Incoming JSON payload: {"oid":"99969266-1849-4372-a19a-e52cee67b081","sn":"98251226730001","uploadTime":"2026-07-09T21:02:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:02:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:59:18.262] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "99969266-1849-4372-a19a-e52cee67b081", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:02:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:02:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:02:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:02:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:02:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:02:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:02:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:02:26Z", "vendor" => "morefun"} [2026-07-09 12:59:18.262] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:59:18.262] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:59:18.263] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:59:18.264] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=547.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-07-09 12:59:18.264] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=401.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-07-09 12:59:18.264] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:59:18.266] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:59:18.267] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:59:18.303] [DEBUG] QUERY OK source="tms_terminals" db=35.9ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:59:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:59:18.304] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:59:18.304] [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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:59:18.343] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:59:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:59:18.368] [DEBUG] QUERY OK db=24.1ms idle=39.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "99969266-1849-4372-a19a-e52cee67b081", "2026-07-09T21:02:26Z", ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:59:18.369] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46760, oid: "99969266-1849-4372-a19a-e52cee67b081", upload_time: "2026-07-09T21:02:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]} [2026-07-09 12:59:18.369] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:02:26Z", "value" => "morefun"} [2026-07-09 12:59:18.411] [DEBUG] QUERY OK db=41.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "morefun", "vendor", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400324, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.412] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:02:26Z", "value" => "kiosk_launcher"} [2026-07-09 12:59:18.438] [DEBUG] QUERY OK db=25.5ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "kiosk_launcher", "model", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400325, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.438] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:02:26Z", "value" => "1.0"} [2026-07-09 12:59:18.463] [DEBUG] QUERY OK db=23.9ms queue=0.2ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "1.0", "app_version", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400326, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.463] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:02:26Z", "value" => "13"} [2026-07-09 12:59:18.498] [DEBUG] QUERY OK db=34.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "13", "android_version", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400327, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.499] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "888"} [2026-07-09 12:59:18.532] [DEBUG] QUERY OK db=32.1ms queue=0.1ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "888", "ram_free_mb", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400328, itemkey: "ram_free_mb", value: "888", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.532] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:02:26Z", "value" => "WIFI"} [2026-07-09 12:59:18.578] [DEBUG] QUERY OK db=44.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "WIFI", "network_type", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400329, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.578] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:02:26Z", "value" => "true"} [2026-07-09 12:59:18.641] [DEBUG] QUERY OK db=62.0ms queue=0.1ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "true", "kiosk_active", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400330, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.641] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:02:26Z", "value" => ""} [2026-07-09 12:59:18.681] [DEBUG] QUERY OK db=39.1ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:02:26Z", "sim_operator", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400331, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.682] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"} [2026-07-09 12:59:18.713] [DEBUG] QUERY OK db=30.8ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "UNKNOWN", "sim_number", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400332, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.713] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"} [2026-07-09 12:59:18.746] [DEBUG] QUERY OK db=31.7ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "UNKNOWN", "sim_iccid", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400333, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.746] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"} [2026-07-09 12:59:18.765] [DEBUG] QUERY OK db=18.5ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "UNKNOWN", "sim_imsi", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400334, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.767] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"} [2026-07-09 12:59:18.802] [DEBUG] QUERY OK db=34.9ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "UNKNOWN", "sim_iccid2", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400335, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.802] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:02:26Z", "value" => "UNKNOWN"} [2026-07-09 12:59:18.827] [DEBUG] QUERY OK db=23.9ms queue=0.2ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "UNKNOWN", "sim_imsi2", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400336, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.828] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "11"} [2026-07-09 12:59:18.857] [DEBUG] QUERY OK db=29.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "11", "data_usage_mb", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400337, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.858] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:02:26Z", "value" => "0"} [2026-07-09 12:59:18.881] [DEBUG] QUERY OK db=22.6ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:26Z", "0", "mobile_data_mb", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400338, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.884] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:59:18.911] [DEBUG] QUERY OK db=26.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46760, ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:18.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400339, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:02:26Z", message: nil, status_log_id: 46760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]}} [2026-07-09 12:59:18.912] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:59:18.912] [INFO ] Incoming JSON payload: {"oid":"e6e3e93c-59cd-43d6-8544-d8e36ae92202","sn":"98250904730001","uploadTime":"2026-07-09T12:59:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"ram_free_mb","value":"1087","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:59:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12:59: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:59:18.914] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e6e3e93c-59cd-43d6-8544-d8e36ae92202", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:59:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:59:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:59:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:59:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "1087"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:59:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:59:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:59:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:59: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:59:17Z", "vendor" => "morefun"} [2026-07-09 12:59:18.914] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:59:18.914] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:59:18.915] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:59:18.916] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=33.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-07-09 12:59:18.916] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.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-07-09 12:59:18.917] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:59:18.918] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:59:18.918] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:59:18.947] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:59:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:59:18.947] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:59:18.949] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:59:18.983] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms queue=0.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:59:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:59:19.017] [DEBUG] QUERY OK db=34.1ms idle=33.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "e6e3e93c-59cd-43d6-8544-d8e36ae92202", "2026-07-09T12:59:17Z", ~N[2026-07-09 12:59:18], ~N[2026-07-09 12:59:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:59:19.017] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46761, oid: "e6e3e93c-59cd-43d6-8544-d8e36ae92202", upload_time: "2026-07-09T12:59:17Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:18], updated_at: ~N[2026-07-09 12:59:18]} [2026-07-09 12:59:19.018] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:59:17Z", "value" => "morefun"} [2026-07-09 12:59:19.043] [DEBUG] QUERY OK db=24.8ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "morefun", "vendor", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400340, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.047] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:59:17Z", "value" => "kiosk_launcher"} [2026-07-09 12:59:19.085] [DEBUG] QUERY OK db=37.6ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "kiosk_launcher", "model", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400341, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.088] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:59:17Z", "value" => "1.0"} [2026-07-09 12:59:19.119] [DEBUG] QUERY OK db=30.4ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "1.0", "app_version", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400342, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.120] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:59:17Z", "value" => "13"} [2026-07-09 12:59:19.145] [DEBUG] QUERY OK db=25.1ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "13", "android_version", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400343, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.145] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "1087"} [2026-07-09 12:59:19.186] [DEBUG] QUERY OK db=40.4ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "1087", "ram_free_mb", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400344, itemkey: "ram_free_mb", value: "1087", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.188] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:59:17Z", "value" => "WIFI"} [2026-07-09 12:59:19.215] [DEBUG] QUERY OK db=26.0ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "WIFI", "network_type", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400345, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.217] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:59:17Z", "value" => "true"} [2026-07-09 12:59:19.255] [DEBUG] QUERY OK db=35.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "true", "kiosk_active", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400346, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.255] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:59:17Z", "value" => ""} [2026-07-09 12:59:19.285] [DEBUG] QUERY OK db=29.4ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:59:17Z", "sim_operator", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400347, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.286] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"} [2026-07-09 12:59:19.313] [DEBUG] QUERY OK db=27.3ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "UNKNOWN", "sim_number", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400348, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.316] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"} [2026-07-09 12:59:19.347] [DEBUG] QUERY OK db=30.8ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "UNKNOWN", "sim_iccid", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400349, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"} [2026-07-09 12:59:19.371] [DEBUG] QUERY OK db=23.0ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "UNKNOWN", "sim_imsi", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400350, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.372] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"} [2026-07-09 12:59:19.394] [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-07-09T12:59:17Z", "UNKNOWN", "sim_iccid2", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400351, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.394] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:59:17Z", "value" => "UNKNOWN"} [2026-07-09 12:59:19.413] [DEBUG] QUERY OK db=18.0ms queue=0.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "UNKNOWN", "sim_imsi2", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400352, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.414] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "27"} [2026-07-09 12:59:19.444] [DEBUG] QUERY OK db=28.9ms queue=0.2ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "27", "data_usage_mb", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400353, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.445] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:59:17Z", "value" => "0"} [2026-07-09 12:59:19.468] [DEBUG] QUERY OK db=23.3ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:17Z", "0", "mobile_data_mb", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400354, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:19.472] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12:59: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:59:19.503] [DEBUG] QUERY OK db=26.2ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46761, ~N[2026-07-09 12:59:19], ~N[2026-07-09 12:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:19.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400355, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:59:17Z", message: nil, status_log_id: 46761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:19], updated_at: ~N[2026-07-09 12:59:19]}} [2026-07-09 12:59:48.362] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 12:59:48.363] [INFO ] Incoming JSON payload: {"oid":"669f4074-1c95-419d-b5a5-05df16f594de","sn":"98251226730001","uploadTime":"2026-07-09T21:02:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"ram_free_mb","value":"901","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:02:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 12:59:48.364] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "669f4074-1c95-419d-b5a5-05df16f594de", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:02:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:02:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:02:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:02:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "901"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:02:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:02:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:02:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:02:56Z", "vendor" => "morefun"} [2026-07-09 12:59:48.365] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:59:48.365] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 12:59:48.365] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:59:48.366] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1498.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-07-09 12:59:48.367] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=566.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-07-09 12:59:48.367] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:59:48.369] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-07-09 12:59:48.369] [INFO ] Terminal updated: 98251226730001 [2026-07-09 12:59:48.394] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:59:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:59:48.395] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 12:59:48.396] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=26.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:697 [2026-07-09 12:59:48.411] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms queue=0.2ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:59:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:59:48.439] [DEBUG] QUERY OK db=27.4ms idle=15.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "669f4074-1c95-419d-b5a5-05df16f594de", "2026-07-09T21:02:56Z", ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:59:48.440] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46762, oid: "669f4074-1c95-419d-b5a5-05df16f594de", upload_time: "2026-07-09T21:02:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]} [2026-07-09 12:59:48.440] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:02:56Z", "value" => "morefun"} [2026-07-09 12:59:48.468] [DEBUG] QUERY OK db=28.0ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "morefun", "vendor", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400356, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.469] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:02:56Z", "value" => "kiosk_launcher"} [2026-07-09 12:59:48.503] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "kiosk_launcher", "model", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400357, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.503] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:02:56Z", "value" => "1.0"} [2026-07-09 12:59:48.519] [DEBUG] QUERY OK db=15.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "1.0", "app_version", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400358, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.519] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:02:56Z", "value" => "13"} [2026-07-09 12:59:48.545] [DEBUG] QUERY OK db=25.4ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "13", "android_version", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400359, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.546] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "901"} [2026-07-09 12:59:48.656] [DEBUG] QUERY OK db=109.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "901", "ram_free_mb", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400360, itemkey: "ram_free_mb", value: "901", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.657] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:02:56Z", "value" => "WIFI"} [2026-07-09 12:59:48.695] [DEBUG] QUERY OK db=38.4ms idle=111.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "WIFI", "network_type", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400361, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.696] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:02:56Z", "value" => "true"} [2026-07-09 12:59:48.720] [DEBUG] QUERY OK db=23.4ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "true", "kiosk_active", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400362, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.720] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:02:56Z", "value" => ""} [2026-07-09 12:59:48.757] [DEBUG] QUERY OK db=36.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:02:56Z", "sim_operator", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400363, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.757] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"} [2026-07-09 12:59:48.783] [DEBUG] QUERY OK db=25.8ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "UNKNOWN", "sim_number", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400364, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.784] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"} [2026-07-09 12:59:48.820] [DEBUG] QUERY OK db=34.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "UNKNOWN", "sim_iccid", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400365, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.822] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"} [2026-07-09 12:59:48.854] [DEBUG] QUERY OK db=31.4ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "UNKNOWN", "sim_imsi", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400366, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.854] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"} [2026-07-09 12:59:48.872] [DEBUG] QUERY OK db=17.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "UNKNOWN", "sim_iccid2", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400367, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.873] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:02:56Z", "value" => "UNKNOWN"} [2026-07-09 12:59:48.907] [DEBUG] QUERY OK db=32.8ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "UNKNOWN", "sim_imsi2", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400368, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.908] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "11"} [2026-07-09 12:59:48.933] [DEBUG] QUERY OK db=23.9ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "11", "data_usage_mb", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400369, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.935] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:02:56Z", "value" => "0"} [2026-07-09 12:59:48.976] [DEBUG] QUERY OK db=38.4ms queue=1.0ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02:56Z", "0", "mobile_data_mb", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:48.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400370, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:48.977] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 12:59:49.079] [DEBUG] QUERY OK db=99.9ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:02: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46762, ~N[2026-07-09 12:59:48], ~N[2026-07-09 12:59:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400371, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:02:56Z", message: nil, status_log_id: 46762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:48], updated_at: ~N[2026-07-09 12:59:48]}} [2026-07-09 12:59:49.081] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 12:59:49.081] [INFO ] Incoming JSON payload: {"oid":"7e32c311-cb68-487a-b0dc-f4e91305f3d1","sn":"98250904730001","uploadTime":"2026-07-09T12:59:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"ram_free_mb","value":"1084","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T12:59:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 12:59:49.082] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7e32c311-cb68-487a-b0dc-f4e91305f3d1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:59:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T12:59:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:59:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:59:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "1084"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:59:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:59:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:59:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T12:59:48Z", "vendor" => "morefun"} [2026-07-09 12:59:49.085] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 12:59:49.085] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 12:59:49.085] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 12:59:49.086] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=108.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-07-09 12:59:49.087] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=8.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-07-09 12:59:49.087] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 12:59:49.087] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 12:59:49.088] [INFO ] Terminal updated: 98250904730001 [2026-07-09 12:59:49.119] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 12:59:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 12:59:49.119] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 12:59:49.121] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 12:59:49.145] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 12:59:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 12:59:49.175] [DEBUG] QUERY OK db=28.8ms idle=25.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "7e32c311-cb68-487a-b0dc-f4e91305f3d1", "2026-07-09T12:59:48Z", ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 12:59:49.176] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46763, oid: "7e32c311-cb68-487a-b0dc-f4e91305f3d1", upload_time: "2026-07-09T12:59:48Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]} [2026-07-09 12:59:49.176] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T12:59:48Z", "value" => "morefun"} [2026-07-09 12:59:49.213] [DEBUG] QUERY OK db=36.7ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "morefun", "vendor", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400372, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.213] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T12:59:48Z", "value" => "kiosk_launcher"} [2026-07-09 12:59:49.246] [DEBUG] QUERY OK db=32.3ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "kiosk_launcher", "model", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400373, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.247] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T12:59:48Z", "value" => "1.0"} [2026-07-09 12:59:49.270] [DEBUG] QUERY OK db=22.8ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "1.0", "app_version", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400374, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.270] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T12:59:48Z", "value" => "13"} [2026-07-09 12:59:49.294] [DEBUG] QUERY OK db=23.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "13", "android_version", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400375, itemkey: "android_version", value: "13", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.294] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "1084"} [2026-07-09 12:59:49.322] [DEBUG] QUERY OK db=27.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "1084", "ram_free_mb", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400376, itemkey: "ram_free_mb", value: "1084", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.323] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T12:59:48Z", "value" => "WIFI"} [2026-07-09 12:59:49.348] [DEBUG] QUERY OK db=24.7ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "WIFI", "network_type", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400377, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.348] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T12:59:48Z", "value" => "true"} [2026-07-09 12:59:49.376] [DEBUG] QUERY OK db=27.7ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "true", "kiosk_active", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400378, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.377] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T12:59:48Z", "value" => ""} [2026-07-09 12:59:49.409] [DEBUG] QUERY OK db=32.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T12:59:48Z", "sim_operator", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400379, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.410] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"} [2026-07-09 12:59:49.434] [DEBUG] QUERY OK db=23.6ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "UNKNOWN", "sim_number", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400380, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.434] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"} [2026-07-09 12:59:49.463] [DEBUG] QUERY OK db=28.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "UNKNOWN", "sim_iccid", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400381, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.464] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"} [2026-07-09 12:59:49.497] [DEBUG] QUERY OK db=32.6ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "UNKNOWN", "sim_imsi", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400382, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.497] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"} [2026-07-09 12:59:49.522] [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-07-09T12:59:48Z", "UNKNOWN", "sim_iccid2", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400383, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.522] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T12:59:48Z", "value" => "UNKNOWN"} [2026-07-09 12:59:49.564] [DEBUG] QUERY OK db=40.6ms queue=1.5ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "UNKNOWN", "sim_imsi2", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400384, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.565] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "27"} [2026-07-09 12:59:49.588] [DEBUG] QUERY OK db=22.7ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "27", "data_usage_mb", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400385, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.589] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T12:59:48Z", "value" => "0"} [2026-07-09 12:59:49.620] [DEBUG] QUERY OK db=29.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12:59:48Z", "0", "mobile_data_mb", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400386, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 12:59:49.621] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 12:59:49.645] [DEBUG] QUERY OK db=22.6ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46763, ~N[2026-07-09 12:59:49], ~N[2026-07-09 12:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 12:59:49.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400387, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T12:59:48Z", message: nil, status_log_id: 46763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 12:59:49], updated_at: ~N[2026-07-09 12:59:49]}} [2026-07-09 13:00:18.423] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:00:18.423] [INFO ] Incoming JSON payload: {"oid":"e409173a-8652-4538-acea-c0b8428e6c29","sn":"98251226730001","uploadTime":"2026-07-09T21:03:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"ram_free_mb","value":"911","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:03:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:00:18.431] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e409173a-8652-4538-acea-c0b8428e6c29", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:03:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:03:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:03:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:03:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "911"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:03:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:03:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:03:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:03:26Z", "vendor" => "morefun"} [2026-07-09 13:00:18.432] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:00:18.433] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:00:18.433] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:00:18.442] [DEBUG] QUERY OK source="parameter_templates" db=8.2ms idle=1506.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-07-09 13:00:18.446] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=512.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-07-09 13:00:18.446] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:00:18.450] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:00:18.452] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:00:18.485] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:00:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:00:18.486] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:00:18.487] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:00:18.530] [DEBUG] QUERY OK source="tms_terminals" db=42.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:00:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:00:18.631] [DEBUG] QUERY OK db=100.3ms idle=43.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e409173a-8652-4538-acea-c0b8428e6c29", "2026-07-09T21:03:26Z", ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:00:18.631] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46764, oid: "e409173a-8652-4538-acea-c0b8428e6c29", upload_time: "2026-07-09T21:03:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]} [2026-07-09 13:00:18.631] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:03:26Z", "value" => "morefun"} [2026-07-09 13:00:18.680] [DEBUG] QUERY OK db=48.2ms queue=0.1ms idle=101.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "morefun", "vendor", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400388, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.681] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:03:26Z", "value" => "kiosk_launcher"} [2026-07-09 13:00:18.761] [DEBUG] QUERY OK db=79.2ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "kiosk_launcher", "model", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400389, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.761] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:03:26Z", "value" => "1.0"} [2026-07-09 13:00:18.807] [DEBUG] QUERY OK db=45.3ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "1.0", "app_version", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400390, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.807] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:03:26Z", "value" => "13"} [2026-07-09 13:00:18.850] [DEBUG] QUERY OK db=41.2ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "13", "android_version", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400391, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.851] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "911"} [2026-07-09 13:00:18.925] [DEBUG] QUERY OK db=73.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "911", "ram_free_mb", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400392, itemkey: "ram_free_mb", value: "911", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.927] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:03:26Z", "value" => "WIFI"} [2026-07-09 13:00:18.965] [DEBUG] QUERY OK db=38.1ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "WIFI", "network_type", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:18.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400393, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:18.966] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:03:26Z", "value" => "true"} [2026-07-09 13:00:19.001] [DEBUG] QUERY OK db=35.0ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "true", "kiosk_active", 46764, ~N[2026-07-09 13:00:18], ~N[2026-07-09 13:00:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400394, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:18], updated_at: ~N[2026-07-09 13:00:18]}} [2026-07-09 13:00:19.002] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:03:26Z", "value" => ""} [2026-07-09 13:00:19.048] [DEBUG] QUERY OK db=46.4ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:03:26Z", "sim_operator", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400395, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.049] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.086] [DEBUG] QUERY OK db=36.5ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "UNKNOWN", "sim_number", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400396, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.086] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.138] [DEBUG] QUERY OK db=50.4ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "UNKNOWN", "sim_iccid", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400397, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.140] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.172] [DEBUG] QUERY OK db=31.2ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "UNKNOWN", "sim_imsi", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400398, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.177] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.232] [DEBUG] QUERY OK db=54.0ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "UNKNOWN", "sim_iccid2", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400399, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.232] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:03:26Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.266] [DEBUG] QUERY OK db=33.1ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "UNKNOWN", "sim_imsi2", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400400, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.268] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "11"} [2026-07-09 13:00:19.315] [DEBUG] QUERY OK db=45.9ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "11", "data_usage_mb", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400401, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.317] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:03:26Z", "value" => "0"} [2026-07-09 13:00:19.347] [DEBUG] QUERY OK db=29.9ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:26Z", "0", "mobile_data_mb", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400402, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.349] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:00:19.403] [DEBUG] QUERY OK db=51.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46764, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400403, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:03:26Z", message: nil, status_log_id: 46764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.404] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:00:19.404] [INFO ] Incoming JSON payload: {"oid":"b1a2212b-718a-4fab-bfce-2cb63a84dad4","sn":"98250904730001","uploadTime":"2026-07-09T13:00:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:00:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:00:19.405] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b1a2212b-718a-4fab-bfce-2cb63a84dad4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:00:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:00:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:00:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:00:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:00:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:00:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:00:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:00:18Z", "vendor" => "morefun"} [2026-07-09 13:00:19.405] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:00:19.405] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:00:19.405] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:00:19.407] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=58.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-07-09 13:00:19.410] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms queue=0.2ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:00:19.411] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:00:19.415] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=1.2ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:00:19.416] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:00:19.456] [DEBUG] QUERY OK source="tms_terminals" db=40.2ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:00:19], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:00:19.456] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:00:19.457] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:00:19.497] [DEBUG] QUERY OK source="tms_terminals" db=38.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:00:19], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:00:19.527] [DEBUG] QUERY OK db=30.5ms idle=39.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "b1a2212b-718a-4fab-bfce-2cb63a84dad4", "2026-07-09T13:00:18Z", ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:00:19.528] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46765, oid: "b1a2212b-718a-4fab-bfce-2cb63a84dad4", upload_time: "2026-07-09T13:00:18Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]} [2026-07-09 13:00:19.528] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:00:18Z", "value" => "morefun"} [2026-07-09 13:00:19.552] [DEBUG] QUERY OK db=23.9ms queue=0.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "morefun", "vendor", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400404, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.554] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:00:18Z", "value" => "kiosk_launcher"} [2026-07-09 13:00:19.629] [DEBUG] QUERY OK db=75.2ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "kiosk_launcher", "model", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400405, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.630] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:00:18Z", "value" => "1.0"} [2026-07-09 13:00:19.663] [DEBUG] QUERY OK db=32.3ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "1.0", "app_version", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400406, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.663] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:00:18Z", "value" => "13"} [2026-07-09 13:00:19.691] [DEBUG] QUERY OK db=27.4ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "13", "android_version", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400407, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.692] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "1082"} [2026-07-09 13:00:19.741] [DEBUG] QUERY OK db=46.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "1082", "ram_free_mb", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400408, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.742] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:00:18Z", "value" => "WIFI"} [2026-07-09 13:00:19.784] [DEBUG] QUERY OK db=39.6ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "WIFI", "network_type", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400409, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.784] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:00:18Z", "value" => "true"} [2026-07-09 13:00:19.824] [DEBUG] QUERY OK db=39.3ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "true", "kiosk_active", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400410, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.824] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:00:18Z", "value" => ""} [2026-07-09 13:00:19.849] [DEBUG] QUERY OK db=25.2ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:00:18Z", "sim_operator", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400411, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.850] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.874] [DEBUG] QUERY OK db=23.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "UNKNOWN", "sim_number", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400412, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.875] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.936] [DEBUG] QUERY OK db=58.8ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "UNKNOWN", "sim_iccid", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400413, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.936] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"} [2026-07-09 13:00:19.960] [DEBUG] QUERY OK db=23.2ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "UNKNOWN", "sim_imsi", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:19.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400414, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:19.960] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"} [2026-07-09 13:00:20.000] [DEBUG] QUERY OK db=39.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "UNKNOWN", "sim_iccid2", 46765, ~N[2026-07-09 13:00:19], ~N[2026-07-09 13:00:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:20.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400415, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:19], updated_at: ~N[2026-07-09 13:00:19]}} [2026-07-09 13:00:20.000] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:00:18Z", "value" => "UNKNOWN"} [2026-07-09 13:00:20.028] [DEBUG] QUERY OK db=27.7ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "UNKNOWN", "sim_imsi2", 46765, ~N[2026-07-09 13:00:20], ~N[2026-07-09 13:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:20.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400416, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:20], updated_at: ~N[2026-07-09 13:00:20]}} [2026-07-09 13:00:20.029] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "27"} [2026-07-09 13:00:20.080] [DEBUG] QUERY OK db=50.9ms queue=0.2ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "27", "data_usage_mb", 46765, ~N[2026-07-09 13:00:20], ~N[2026-07-09 13:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:20.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400417, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:20], updated_at: ~N[2026-07-09 13:00:20]}} [2026-07-09 13:00:20.080] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:00:18Z", "value" => "0"} [2026-07-09 13:00:20.115] [DEBUG] QUERY OK db=32.5ms queue=0.2ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:18Z", "0", "mobile_data_mb", 46765, ~N[2026-07-09 13:00:20], ~N[2026-07-09 13:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:20.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400418, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:20], updated_at: ~N[2026-07-09 13:00:20]}} [2026-07-09 13:00:20.117] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:00:20.162] [DEBUG] QUERY OK db=44.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46765, ~N[2026-07-09 13:00:20], ~N[2026-07-09 13:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:20.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400419, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:00:18Z", message: nil, status_log_id: 46765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:20], updated_at: ~N[2026-07-09 13:00:20]}} [2026-07-09 13:00:21.955] [INFO ] Running offline device check... [2026-07-09 13:00:21.955] [INFO ] Starting offline device check... [2026-07-09 13:00:21.959] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=88.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:747 [2026-07-09 13:00:21.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms 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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.981] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.982] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.984] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:21.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=12.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.016] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.019] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.040] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.041] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.043] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.046] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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:762 [2026-07-09 13:00:22.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=16.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:00:22.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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:762 [2026-07-09 13:00:22.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.088] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.092] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.094] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.095] [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:762 [2026-07-09 13:00:22.096] [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:762 [2026-07-09 13:00:22.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.100] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:00:22.100] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 13:00:22.100] [INFO ] Offline device check completed successfully [2026-07-09 13:00:48.511] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:00:48.512] [INFO ] Incoming JSON payload: {"oid":"1118900e-ef0d-4a87-b7b6-0a4797c15737","sn":"98251226730001","uploadTime":"2026-07-09T21:03:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"ram_free_mb","value":"903","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:03:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:00:48.514] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1118900e-ef0d-4a87-b7b6-0a4797c15737", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:03:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:03:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:03:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:03:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "903"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:03:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:03:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:03:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:03:56Z", "vendor" => "morefun"} [2026-07-09 13:00:48.514] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:00:48.514] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:00:48.514] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:00:48.516] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1479.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-07-09 13:00:48.517] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=478.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-07-09 13:00:48.517] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:00:48.519] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:00:48.523] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:00:48.559] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:00:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:00:48.559] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:00:48.560] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:00:48.597] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:00:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:00:48.624] [DEBUG] QUERY OK db=25.3ms idle=37.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1118900e-ef0d-4a87-b7b6-0a4797c15737", "2026-07-09T21:03:56Z", ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:00:48.624] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46766, oid: "1118900e-ef0d-4a87-b7b6-0a4797c15737", upload_time: "2026-07-09T21:03:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]} [2026-07-09 13:00:48.624] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:03:56Z", "value" => "morefun"} [2026-07-09 13:00:48.647] [DEBUG] QUERY OK db=22.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "morefun", "vendor", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400420, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.649] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:03:56Z", "value" => "kiosk_launcher"} [2026-07-09 13:00:48.679] [DEBUG] QUERY OK db=29.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "kiosk_launcher", "model", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400421, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.679] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:03:56Z", "value" => "1.0"} [2026-07-09 13:00:48.700] [DEBUG] QUERY OK db=18.2ms queue=2.4ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "1.0", "app_version", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400422, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.701] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:03:56Z", "value" => "13"} [2026-07-09 13:00:48.727] [DEBUG] QUERY OK db=26.1ms queue=0.1ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "13", "android_version", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400423, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.728] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "903"} [2026-07-09 13:00:48.764] [DEBUG] QUERY OK db=35.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "903", "ram_free_mb", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400424, itemkey: "ram_free_mb", value: "903", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.764] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:03:56Z", "value" => "WIFI"} [2026-07-09 13:00:48.790] [DEBUG] QUERY OK db=25.4ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "WIFI", "network_type", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400425, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.791] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:03:56Z", "value" => "true"} [2026-07-09 13:00:48.820] [DEBUG] QUERY OK db=28.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "true", "kiosk_active", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400426, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.821] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:03:56Z", "value" => ""} [2026-07-09 13:00:48.863] [DEBUG] QUERY OK db=42.0ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:03:56Z", "sim_operator", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400427, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.864] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"} [2026-07-09 13:00:48.897] [DEBUG] QUERY OK db=32.4ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "UNKNOWN", "sim_number", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400428, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.897] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"} [2026-07-09 13:00:48.927] [DEBUG] QUERY OK db=29.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "UNKNOWN", "sim_iccid", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400429, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.929] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"} [2026-07-09 13:00:48.956] [DEBUG] QUERY OK db=26.6ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "UNKNOWN", "sim_imsi", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400430, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.956] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"} [2026-07-09 13:00:48.989] [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-07-09T21:03:56Z", "UNKNOWN", "sim_iccid2", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:48.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400431, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:48.990] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:03:56Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.014] [DEBUG] QUERY OK db=24.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "UNKNOWN", "sim_imsi2", 46766, ~N[2026-07-09 13:00:48], ~N[2026-07-09 13:00:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400432, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:48], updated_at: ~N[2026-07-09 13:00:48]}} [2026-07-09 13:00:49.015] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "11"} [2026-07-09 13:00:49.049] [DEBUG] QUERY OK db=34.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "11", "data_usage_mb", 46766, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400433, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.050] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:03:56Z", "value" => "0"} [2026-07-09 13:00:49.084] [DEBUG] QUERY OK db=33.8ms idle=10.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03:56Z", "0", "mobile_data_mb", 46766, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400434, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.085] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:00:49.109] [DEBUG] QUERY OK db=22.9ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:03: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46766, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400435, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:03:56Z", message: nil, status_log_id: 46766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.110] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:00:49.110] [INFO ] Incoming JSON payload: {"oid":"4783836d-80d3-4d21-a4b5-6689510a08eb","sn":"98250904730001","uploadTime":"2026-07-09T13:00:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:00:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:00:49.111] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4783836d-80d3-4d21-a4b5-6689510a08eb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:00:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:00:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:00:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:00:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:00:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:00:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:00:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:00:48Z", "vendor" => "morefun"} [2026-07-09 13:00:49.111] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:00:49.112] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:00:49.112] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:00:49.112] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=28.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-07-09 13:00:49.113] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=4.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-07-09 13:00:49.113] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:00:49.114] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:00:49.114] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:00:49.155] [DEBUG] QUERY OK source="tms_terminals" db=41.0ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:00:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:00:49.156] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:00:49.157] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:00:49.189] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:00:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:00:49.212] [DEBUG] QUERY OK db=22.3ms idle=32.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "4783836d-80d3-4d21-a4b5-6689510a08eb", "2026-07-09T13:00:48Z", ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:00:49.212] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46767, oid: "4783836d-80d3-4d21-a4b5-6689510a08eb", upload_time: "2026-07-09T13:00:48Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]} [2026-07-09 13:00:49.212] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:00:48Z", "value" => "morefun"} [2026-07-09 13:00:49.279] [DEBUG] QUERY OK db=66.9ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "morefun", "vendor", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400436, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.280] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:00:48Z", "value" => "kiosk_launcher"} [2026-07-09 13:00:49.326] [DEBUG] QUERY OK db=46.1ms queue=0.1ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "kiosk_launcher", "model", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400437, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.327] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:00:48Z", "value" => "1.0"} [2026-07-09 13:00:49.381] [DEBUG] QUERY OK db=54.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "1.0", "app_version", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400438, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.383] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:00:48Z", "value" => "13"} [2026-07-09 13:00:49.414] [DEBUG] QUERY OK db=31.4ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "13", "android_version", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400439, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.415] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "1080"} [2026-07-09 13:00:49.432] [DEBUG] QUERY OK db=16.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "1080", "ram_free_mb", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400440, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.432] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:00:48Z", "value" => "WIFI"} [2026-07-09 13:00:49.480] [DEBUG] QUERY OK db=47.8ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "WIFI", "network_type", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400441, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.482] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:00:48Z", "value" => "true"} [2026-07-09 13:00:49.512] [DEBUG] QUERY OK db=29.1ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "true", "kiosk_active", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400442, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.513] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:00:48Z", "value" => ""} [2026-07-09 13:00:49.557] [DEBUG] QUERY OK db=44.2ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:00:48Z", "sim_operator", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400443, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.558] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.614] [DEBUG] QUERY OK db=53.8ms queue=2.1ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "UNKNOWN", "sim_number", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400444, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.615] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.648] [DEBUG] QUERY OK db=32.6ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "UNKNOWN", "sim_iccid", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400445, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.649] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.686] [DEBUG] QUERY OK db=35.4ms queue=0.1ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "UNKNOWN", "sim_imsi", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400446, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.691] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.722] [DEBUG] QUERY OK db=27.6ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "UNKNOWN", "sim_iccid2", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400447, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.722] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:00:48Z", "value" => "UNKNOWN"} [2026-07-09 13:00:49.757] [DEBUG] QUERY OK db=31.5ms queue=3.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "UNKNOWN", "sim_imsi2", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400448, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.759] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "27"} [2026-07-09 13:00:49.803] [DEBUG] QUERY OK db=43.7ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "27", "data_usage_mb", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400449, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.803] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:00:48Z", "value" => "0"} [2026-07-09 13:00:49.826] [DEBUG] QUERY OK db=22.4ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00:48Z", "0", "mobile_data_mb", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400450, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:00:49.827] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:00:49.868] [DEBUG] QUERY OK db=40.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:00: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46767, ~N[2026-07-09 13:00:49], ~N[2026-07-09 13:00:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:00:49.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400451, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:00:48Z", message: nil, status_log_id: 46767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:00:49], updated_at: ~N[2026-07-09 13:00:49]}} [2026-07-09 13:01:18.906] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:01:18.906] [INFO ] Incoming JSON payload: {"oid":"17712d14-1ae4-4cc7-9865-6fdc0f3915c0","sn":"98250904730001","uploadTime":"2026-07-09T13:01:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:01:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:01:18.907] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "17712d14-1ae4-4cc7-9865-6fdc0f3915c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:01:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:01:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:01:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:01:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:01:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:01:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:01:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:01:18Z", "vendor" => "morefun"} [2026-07-09 13:01:18.908] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:01:18.908] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:01:18.908] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:01:18.909] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=743.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-07-09 13:01:18.910] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=33.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-07-09 13:01:18.910] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:01:18.912] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:01:18.912] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:01:18.936] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:01:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:01:18.937] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:01:18.938] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:01:18.980] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:01:18], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:01:19.003] [DEBUG] QUERY OK db=22.0ms idle=42.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "17712d14-1ae4-4cc7-9865-6fdc0f3915c0", "2026-07-09T13:01:18Z", ~N[2026-07-09 13:01:18], ~N[2026-07-09 13:01:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:01:19.003] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46768, oid: "17712d14-1ae4-4cc7-9865-6fdc0f3915c0", upload_time: "2026-07-09T13:01:18Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:18], updated_at: ~N[2026-07-09 13:01:18]} [2026-07-09 13:01:19.004] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:01:18Z", "value" => "morefun"} [2026-07-09 13:01:19.042] [DEBUG] QUERY OK db=38.0ms queue=0.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "morefun", "vendor", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400452, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.043] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:01:18Z", "value" => "kiosk_launcher"} [2026-07-09 13:01:19.095] [DEBUG] QUERY OK db=51.4ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "kiosk_launcher", "model", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400453, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.095] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:01:18Z", "value" => "1.0"} [2026-07-09 13:01:19.151] [DEBUG] QUERY OK db=55.4ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "1.0", "app_version", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400454, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.151] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:01:18Z", "value" => "13"} [2026-07-09 13:01:19.178] [DEBUG] QUERY OK db=26.6ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "13", "android_version", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400455, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.179] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "1085"} [2026-07-09 13:01:19.207] [DEBUG] QUERY OK db=27.8ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "1085", "ram_free_mb", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400456, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.208] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:01:18Z", "value" => "WIFI"} [2026-07-09 13:01:19.273] [DEBUG] QUERY OK db=63.3ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "WIFI", "network_type", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400457, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.276] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:01:18Z", "value" => "true"} [2026-07-09 13:01:19.312] [DEBUG] QUERY OK db=35.5ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "true", "kiosk_active", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400458, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.313] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:01:18Z", "value" => ""} [2026-07-09 13:01:19.332] [DEBUG] QUERY OK db=19.1ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:01:18Z", "sim_operator", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400459, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.333] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"} [2026-07-09 13:01:19.366] [DEBUG] QUERY OK db=32.8ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "UNKNOWN", "sim_number", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400460, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.366] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"} [2026-07-09 13:01:19.402] [DEBUG] QUERY OK db=35.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "UNKNOWN", "sim_iccid", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400461, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.404] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"} [2026-07-09 13:01:19.447] [DEBUG] QUERY OK db=40.9ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "UNKNOWN", "sim_imsi", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400462, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.447] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"} [2026-07-09 13:01:19.483] [DEBUG] QUERY OK db=35.4ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "UNKNOWN", "sim_iccid2", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400463, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.483] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:01:18Z", "value" => "UNKNOWN"} [2026-07-09 13:01:19.499] [DEBUG] QUERY OK db=15.4ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "UNKNOWN", "sim_imsi2", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400464, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.500] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "27"} [2026-07-09 13:01:19.555] [DEBUG] QUERY OK db=54.1ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "27", "data_usage_mb", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400465, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.555] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:01:18Z", "value" => "0"} [2026-07-09 13:01:19.656] [DEBUG] QUERY OK db=100.7ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:18Z", "0", "mobile_data_mb", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400466, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.660] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:01:19.697] [DEBUG] QUERY OK db=36.2ms idle=105.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46768, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400467, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:01:18Z", message: nil, status_log_id: 46768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.699] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:01:19.699] [INFO ] Incoming JSON payload: {"oid":"03debd8f-e841-417e-984b-70aa0aa074c8","sn":"98251226730001","uploadTime":"2026-07-09T21:04:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"ram_free_mb","value":"910","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:04:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:01:19.702] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "03debd8f-e841-417e-984b-70aa0aa074c8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:04:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:04:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:04:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:04:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "910"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:04:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:04:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:04:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:04:26Z", "vendor" => "morefun"} [2026-07-09 13:01:19.703] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:01:19.704] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:01:19.704] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:01:19.705] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=47.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-07-09 13:01:19.707] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=8.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-07-09 13:01:19.707] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:01:19.707] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:01:19.708] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:01:19.748] [DEBUG] QUERY OK source="tms_terminals" db=39.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:01:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:01:19.748] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:01:19.750] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=40.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:697 [2026-07-09 13:01:19.786] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:01:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:01:19.836] [DEBUG] QUERY OK db=48.5ms queue=0.8ms idle=36.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "03debd8f-e841-417e-984b-70aa0aa074c8", "2026-07-09T21:04:26Z", ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:01:19.838] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46769, oid: "03debd8f-e841-417e-984b-70aa0aa074c8", upload_time: "2026-07-09T21:04:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]} [2026-07-09 13:01:19.838] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:04:26Z", "value" => "morefun"} [2026-07-09 13:01:19.879] [DEBUG] QUERY OK db=40.6ms queue=0.1ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "morefun", "vendor", 46769, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400468, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.881] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:04:26Z", "value" => "kiosk_launcher"} [2026-07-09 13:01:19.927] [DEBUG] QUERY OK db=44.9ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "kiosk_launcher", "model", 46769, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400469, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.929] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:04:26Z", "value" => "1.0"} [2026-07-09 13:01:19.961] [DEBUG] QUERY OK db=31.7ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "1.0", "app_version", 46769, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:19.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400470, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:19.961] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:04:26Z", "value" => "13"} [2026-07-09 13:01:20.003] [DEBUG] QUERY OK db=40.3ms queue=0.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "13", "android_version", 46769, ~N[2026-07-09 13:01:19], ~N[2026-07-09 13:01:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400471, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:19], updated_at: ~N[2026-07-09 13:01:19]}} [2026-07-09 13:01:20.004] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "910"} [2026-07-09 13:01:20.042] [DEBUG] QUERY OK db=37.1ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "910", "ram_free_mb", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400472, itemkey: "ram_free_mb", value: "910", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.042] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:04:26Z", "value" => "WIFI"} [2026-07-09 13:01:20.093] [DEBUG] QUERY OK db=50.0ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "WIFI", "network_type", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400473, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.093] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:04:26Z", "value" => "true"} [2026-07-09 13:01:20.105] [DEBUG] QUERY OK db=11.8ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "true", "kiosk_active", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400474, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.106] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:04:26Z", "value" => ""} [2026-07-09 13:01:20.144] [DEBUG] QUERY OK db=37.1ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:04:26Z", "sim_operator", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400475, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.144] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"} [2026-07-09 13:01:20.184] [DEBUG] QUERY OK db=39.5ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "UNKNOWN", "sim_number", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400476, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.185] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"} [2026-07-09 13:01:20.233] [DEBUG] QUERY OK db=44.5ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "UNKNOWN", "sim_iccid", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400477, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.234] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"} [2026-07-09 13:01:20.271] [DEBUG] QUERY OK db=36.3ms queue=0.4ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "UNKNOWN", "sim_imsi", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400478, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.272] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"} [2026-07-09 13:01:20.317] [DEBUG] QUERY OK db=44.7ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "UNKNOWN", "sim_iccid2", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400479, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.318] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:04:26Z", "value" => "UNKNOWN"} [2026-07-09 13:01:20.377] [DEBUG] QUERY OK db=58.9ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "UNKNOWN", "sim_imsi2", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400480, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.378] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "11"} [2026-07-09 13:01:20.402] [DEBUG] QUERY OK db=24.1ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "11", "data_usage_mb", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400481, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.403] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:04:26Z", "value" => "0"} [2026-07-09 13:01:20.455] [DEBUG] QUERY OK db=51.5ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:26Z", "0", "mobile_data_mb", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400482, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:20.457] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:01:20.483] [DEBUG] QUERY OK db=25.4ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46769, ~N[2026-07-09 13:01:20], ~N[2026-07-09 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:20.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400483, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:04:26Z", message: nil, status_log_id: 46769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:20], updated_at: ~N[2026-07-09 13:01:20]}} [2026-07-09 13:01:49.064] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:01:49.064] [INFO ] Incoming JSON payload: {"oid":"e01d6773-f0b9-4aba-8258-8bed69e4dc6f","sn":"98251226730001","uploadTime":"2026-07-09T21:04:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"ram_free_mb","value":"901","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:04:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:01:49.066] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e01d6773-f0b9-4aba-8258-8bed69e4dc6f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:04:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:04:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:04:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:04:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "901"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:04:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:04:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:04:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:04:57Z", "vendor" => "morefun"} [2026-07-09 13:01:49.066] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:01:49.066] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:01:49.066] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:01:49.067] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=916.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-07-09 13:01:49.069] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=815.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-07-09 13:01:49.069] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:01:49.071] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:01:49.072] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:01:49.096] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:01:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:01:49.096] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:01:49.098] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:01:49.134] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:01:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:01:49.181] [DEBUG] QUERY OK db=45.9ms queue=0.1ms idle=37.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e01d6773-f0b9-4aba-8258-8bed69e4dc6f", "2026-07-09T21:04:57Z", ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:01:49.181] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46770, oid: "e01d6773-f0b9-4aba-8258-8bed69e4dc6f", upload_time: "2026-07-09T21:04:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]} [2026-07-09 13:01:49.181] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:04:57Z", "value" => "morefun"} [2026-07-09 13:01:49.226] [DEBUG] QUERY OK db=44.6ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "morefun", "vendor", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400484, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.227] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:04:57Z", "value" => "kiosk_launcher"} [2026-07-09 13:01:49.260] [DEBUG] QUERY OK db=32.9ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "kiosk_launcher", "model", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400485, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.260] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:04:57Z", "value" => "1.0"} [2026-07-09 13:01:49.296] [DEBUG] QUERY OK db=35.9ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "1.0", "app_version", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400486, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.297] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:04:57Z", "value" => "13"} [2026-07-09 13:01:49.329] [DEBUG] QUERY OK db=31.8ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "13", "android_version", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400487, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.329] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "901"} [2026-07-09 13:01:49.355] [DEBUG] QUERY OK db=24.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-07-09T21:04:57Z", "901", "ram_free_mb", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400488, itemkey: "ram_free_mb", value: "901", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.356] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:04:57Z", "value" => "WIFI"} [2026-07-09 13:01:49.379] [DEBUG] QUERY OK db=22.5ms queue=0.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "WIFI", "network_type", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400489, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.379] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:04:57Z", "value" => "true"} [2026-07-09 13:01:49.414] [DEBUG] QUERY OK db=34.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "true", "kiosk_active", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400490, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.414] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:04:57Z", "value" => ""} [2026-07-09 13:01:49.459] [DEBUG] QUERY OK db=44.3ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:04:57Z", "sim_operator", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400491, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.459] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"} [2026-07-09 13:01:49.491] [DEBUG] QUERY OK db=31.1ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "UNKNOWN", "sim_number", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400492, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.491] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"} [2026-07-09 13:01:49.527] [DEBUG] QUERY OK db=35.3ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "UNKNOWN", "sim_iccid", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400493, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.528] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"} [2026-07-09 13:01:49.551] [DEBUG] QUERY OK db=22.7ms queue=0.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "UNKNOWN", "sim_imsi", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400494, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.551] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"} [2026-07-09 13:01:49.622] [DEBUG] QUERY OK db=69.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "UNKNOWN", "sim_iccid2", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400495, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.622] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:04:57Z", "value" => "UNKNOWN"} [2026-07-09 13:01:49.650] [DEBUG] QUERY OK db=27.3ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "UNKNOWN", "sim_imsi2", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400496, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.650] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "11"} [2026-07-09 13:01:49.685] [DEBUG] QUERY OK db=34.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "11", "data_usage_mb", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400497, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.686] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:04:57Z", "value" => "0"} [2026-07-09 13:01:49.727] [DEBUG] QUERY OK db=40.5ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04:57Z", "0", "mobile_data_mb", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400498, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.728] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:01:49.764] [DEBUG] QUERY OK db=35.1ms queue=0.1ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:04: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46770, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400499, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:04:57Z", message: nil, status_log_id: 46770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.765] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:01:49.765] [INFO ] Incoming JSON payload: {"oid":"cf33ddbe-8ef1-4b7f-8dd4-caf7a318cd42","sn":"98250904730001","uploadTime":"2026-07-09T13:01:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:01:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:01:49.767] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cf33ddbe-8ef1-4b7f-8dd4-caf7a318cd42", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:01:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:01:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:01:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:01:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:01:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:01:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:01:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:01:48Z", "vendor" => "morefun"} [2026-07-09 13:01:49.767] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:01:49.767] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:01:49.767] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:01:49.768] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=40.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-07-09 13:01:49.769] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.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-07-09 13:01:49.769] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:01:49.771] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:01:49.771] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:01:49.801] [DEBUG] QUERY OK source="tms_terminals" db=30.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:01:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:01:49.803] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:01:49.804] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=32.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:01:49.834] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:01:49], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:01:49.857] [DEBUG] QUERY OK db=22.8ms idle=30.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "cf33ddbe-8ef1-4b7f-8dd4-caf7a318cd42", "2026-07-09T13:01:48Z", ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:01:49.858] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46771, oid: "cf33ddbe-8ef1-4b7f-8dd4-caf7a318cd42", upload_time: "2026-07-09T13:01:48Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]} [2026-07-09 13:01:49.858] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:01:48Z", "value" => "morefun"} [2026-07-09 13:01:49.889] [DEBUG] QUERY OK db=30.9ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "morefun", "vendor", 46771, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400500, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.890] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:01:48Z", "value" => "kiosk_launcher"} [2026-07-09 13:01:49.934] [DEBUG] QUERY OK db=42.9ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "kiosk_launcher", "model", 46771, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400501, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.934] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:01:48Z", "value" => "1.0"} [2026-07-09 13:01:49.961] [DEBUG] QUERY OK db=26.9ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "1.0", "app_version", 46771, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:49.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400502, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:49.962] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:01:48Z", "value" => "13"} [2026-07-09 13:01:50.003] [DEBUG] QUERY OK db=39.3ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "13", "android_version", 46771, ~N[2026-07-09 13:01:49], ~N[2026-07-09 13:01:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400503, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:49], updated_at: ~N[2026-07-09 13:01:49]}} [2026-07-09 13:01:50.004] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "1085"} [2026-07-09 13:01:50.027] [DEBUG] QUERY OK db=22.8ms queue=0.2ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "1085", "ram_free_mb", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400504, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.028] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:01:48Z", "value" => "WIFI"} [2026-07-09 13:01:50.077] [DEBUG] QUERY OK db=48.3ms queue=0.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "WIFI", "network_type", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400505, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.078] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:01:48Z", "value" => "true"} [2026-07-09 13:01:50.101] [DEBUG] QUERY OK db=23.1ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "true", "kiosk_active", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400506, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.102] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:01:48Z", "value" => ""} [2026-07-09 13:01:50.127] [DEBUG] QUERY OK db=24.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:01:48Z", "sim_operator", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400507, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.128] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"} [2026-07-09 13:01:50.163] [DEBUG] QUERY OK db=34.3ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "UNKNOWN", "sim_number", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400508, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.166] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"} [2026-07-09 13:01:50.209] [DEBUG] QUERY OK db=39.7ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "UNKNOWN", "sim_iccid", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400509, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.210] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"} [2026-07-09 13:01:50.251] [DEBUG] QUERY OK db=39.8ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "UNKNOWN", "sim_imsi", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400510, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.252] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"} [2026-07-09 13:01:50.278] [DEBUG] QUERY OK db=26.0ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "UNKNOWN", "sim_iccid2", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400511, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.278] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:01:48Z", "value" => "UNKNOWN"} [2026-07-09 13:01:50.327] [DEBUG] QUERY OK db=47.9ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "UNKNOWN", "sim_imsi2", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400512, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.328] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "27"} [2026-07-09 13:01:50.360] [DEBUG] QUERY OK db=31.7ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "27", "data_usage_mb", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400513, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.361] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:01:48Z", "value" => "0"} [2026-07-09 13:01:50.397] [DEBUG] QUERY OK db=35.7ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01:48Z", "0", "mobile_data_mb", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400514, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:01:50.398] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:01:50.438] [DEBUG] QUERY OK db=39.7ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:01: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46771, ~N[2026-07-09 13:01:50], ~N[2026-07-09 13:01:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:01:50.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400515, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:01:48Z", message: nil, status_log_id: 46771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:01:50], updated_at: ~N[2026-07-09 13:01:50]}} [2026-07-09 13:02:19.153] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:02:19.153] [INFO ] Incoming JSON payload: {"oid":"cb6f89ca-5801-4a17-82f9-fb1cbcb7b917","sn":"98251226730001","uploadTime":"2026-07-09T21:05:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:05:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:05: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:02:19.157] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cb6f89ca-5801-4a17-82f9-fb1cbcb7b917", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:05:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:05:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:05:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:05:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:05:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:05:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:05:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:05: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:05:27Z", "vendor" => "morefun"} [2026-07-09 13:02:19.157] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:02:19.158] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:02:19.158] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:02:19.159] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=797.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-07-09 13:02:19.160] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=283.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-07-09 13:02:19.160] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:02:19.163] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:02:19.164] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:02:19.189] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:02:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:02:19.189] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:02:19.191] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:02:19.222] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:02:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:02:19.249] [DEBUG] QUERY OK db=26.9ms queue=0.3ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cb6f89ca-5801-4a17-82f9-fb1cbcb7b917", "2026-07-09T21:05:27Z", ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:02:19.250] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46772, oid: "cb6f89ca-5801-4a17-82f9-fb1cbcb7b917", upload_time: "2026-07-09T21:05:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]} [2026-07-09 13:02:19.250] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:05:27Z", "value" => "morefun"} [2026-07-09 13:02:19.275] [DEBUG] QUERY OK db=25.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "morefun", "vendor", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400516, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.276] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:05:27Z", "value" => "kiosk_launcher"} [2026-07-09 13:02:19.319] [DEBUG] QUERY OK db=42.3ms queue=0.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "kiosk_launcher", "model", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400517, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.320] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:05:27Z", "value" => "1.0"} [2026-07-09 13:02:19.355] [DEBUG] QUERY OK db=34.5ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "1.0", "app_version", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400518, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.356] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:05:27Z", "value" => "13"} [2026-07-09 13:02:19.372] [DEBUG] QUERY OK db=15.4ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "13", "android_version", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400519, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.372] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "900"} [2026-07-09 13:02:19.427] [DEBUG] QUERY OK db=54.6ms idle=9.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "900", "ram_free_mb", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400520, itemkey: "ram_free_mb", value: "900", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.428] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:05:27Z", "value" => "WIFI"} [2026-07-09 13:02:19.456] [DEBUG] QUERY OK db=28.2ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "WIFI", "network_type", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400521, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.457] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:05:27Z", "value" => "true"} [2026-07-09 13:02:19.480] [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-07-09T21:05:27Z", "true", "kiosk_active", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400522, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.481] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:05:27Z", "value" => ""} [2026-07-09 13:02:19.511] [DEBUG] QUERY OK db=29.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:05:27Z", "sim_operator", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400523, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.511] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"} [2026-07-09 13:02:19.532] [DEBUG] QUERY OK db=20.8ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "UNKNOWN", "sim_number", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400524, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.533] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"} [2026-07-09 13:02:19.567] [DEBUG] QUERY OK db=33.0ms queue=0.6ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "UNKNOWN", "sim_iccid", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400525, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.570] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"} [2026-07-09 13:02:19.607] [DEBUG] QUERY OK db=36.7ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "UNKNOWN", "sim_imsi", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400526, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.608] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"} [2026-07-09 13:02:19.646] [DEBUG] QUERY OK db=38.4ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "UNKNOWN", "sim_iccid2", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400527, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.648] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:05:27Z", "value" => "UNKNOWN"} [2026-07-09 13:02:19.688] [DEBUG] QUERY OK db=38.6ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "UNKNOWN", "sim_imsi2", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400528, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.688] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "11"} [2026-07-09 13:02:19.712] [DEBUG] QUERY OK db=23.3ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "11", "data_usage_mb", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400529, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.712] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:05:27Z", "value" => "0"} [2026-07-09 13:02:19.745] [DEBUG] QUERY OK db=32.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:27Z", "0", "mobile_data_mb", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400530, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.746] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:05: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:02:19.784] [DEBUG] QUERY OK db=36.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46772, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400531, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:05:27Z", message: nil, status_log_id: 46772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.785] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:02:19.785] [INFO ] Incoming JSON payload: {"oid":"d60f2a42-ddd8-4c5e-b820-ed11ee309f7d","sn":"98250904730001","uploadTime":"2026-07-09T13:02:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:02:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:02:19.787] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d60f2a42-ddd8-4c5e-b820-ed11ee309f7d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:02:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:02:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:02:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:02:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:02:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:02:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:02:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:02:19Z", "vendor" => "morefun"} [2026-07-09 13:02:19.787] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:02:19.787] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:02:19.787] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:02:19.788] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=42.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-07-09 13:02:19.789] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=5.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:02:19.789] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:02:19.791] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:02:19.791] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:02:19.830] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:02:19], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:02:19.831] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:02:19.832] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=40.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:02:19.857] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:02:19], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:02:19.918] [DEBUG] QUERY OK db=60.5ms idle=25.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "d60f2a42-ddd8-4c5e-b820-ed11ee309f7d", "2026-07-09T13:02:19Z", ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:02:19.918] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46773, oid: "d60f2a42-ddd8-4c5e-b820-ed11ee309f7d", upload_time: "2026-07-09T13:02:19Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]} [2026-07-09 13:02:19.918] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:02:19Z", "value" => "morefun"} [2026-07-09 13:02:19.957] [DEBUG] QUERY OK db=38.8ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "morefun", "vendor", 46773, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400532, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.958] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:02:19Z", "value" => "kiosk_launcher"} [2026-07-09 13:02:19.990] [DEBUG] QUERY OK db=31.7ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "kiosk_launcher", "model", 46773, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:19.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400533, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:19.991] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:02:19Z", "value" => "1.0"} [2026-07-09 13:02:20.033] [DEBUG] QUERY OK db=41.8ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "1.0", "app_version", 46773, ~N[2026-07-09 13:02:19], ~N[2026-07-09 13:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400534, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:19], updated_at: ~N[2026-07-09 13:02:19]}} [2026-07-09 13:02:20.033] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:02:19Z", "value" => "13"} [2026-07-09 13:02:20.058] [DEBUG] QUERY OK db=23.8ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "13", "android_version", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400535, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.058] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "1080"} [2026-07-09 13:02:20.084] [DEBUG] QUERY OK db=25.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "1080", "ram_free_mb", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400536, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.084] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:02:19Z", "value" => "WIFI"} [2026-07-09 13:02:20.125] [DEBUG] QUERY OK db=39.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "WIFI", "network_type", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400537, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.125] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:02:19Z", "value" => "true"} [2026-07-09 13:02:20.149] [DEBUG] QUERY OK db=23.5ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "true", "kiosk_active", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400538, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.150] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:02:19Z", "value" => ""} [2026-07-09 13:02:20.213] [DEBUG] QUERY OK db=63.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:02:19Z", "sim_operator", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400539, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.214] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"} [2026-07-09 13:02:20.244] [DEBUG] QUERY OK db=29.6ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "UNKNOWN", "sim_number", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400540, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.245] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"} [2026-07-09 13:02:20.283] [DEBUG] QUERY OK db=37.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "UNKNOWN", "sim_iccid", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400541, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.284] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"} [2026-07-09 13:02:20.323] [DEBUG] QUERY OK db=39.1ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "UNKNOWN", "sim_imsi", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400542, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.323] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"} [2026-07-09 13:02:20.347] [DEBUG] QUERY OK db=22.8ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "UNKNOWN", "sim_iccid2", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400543, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:02:19Z", "value" => "UNKNOWN"} [2026-07-09 13:02:20.392] [DEBUG] QUERY OK db=42.9ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "UNKNOWN", "sim_imsi2", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400544, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.392] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "27"} [2026-07-09 13:02:20.428] [DEBUG] QUERY OK db=34.5ms queue=0.3ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "27", "data_usage_mb", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400545, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.428] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:02:19Z", "value" => "0"} [2026-07-09 13:02:20.452] [DEBUG] QUERY OK db=22.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:19Z", "0", "mobile_data_mb", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400546, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:20.453] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:02:20.499] [DEBUG] QUERY OK db=45.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46773, ~N[2026-07-09 13:02:20], ~N[2026-07-09 13:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:20.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400547, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:02:19Z", message: nil, status_log_id: 46773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:20], updated_at: ~N[2026-07-09 13:02:20]}} [2026-07-09 13:02:48.543] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 13:02:48.543] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T13:02:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T13:02:48Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T13:02:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T13:02:48Z","value":"1"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T13:02:48Z","value":"65"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":"1.0.0"},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":"1.0.0"},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T13:02:48Z","vendor":"softpos"} [2026-07-09 13:02:48.544] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:02:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:02:48Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:02:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:02:48Z", "value" => "1"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:02:48Z", "value" => "65"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T13:02:48Z", "vendor" => "softpos"} [2026-07-09 13:02:48.544] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "1.0.0", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:02:48.544] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 13:02:48.544] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 13:02:48.545] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=666.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:02:48.546] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=97.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 13:02:48.547] [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` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 13:02:48.550] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=0.8ms 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-07-09 13:02:48.551] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms 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 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 13:02:48.591] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:02:48.592] [DEBUG] QUERY OK db=0.6ms queue=0.4ms idle=1705.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 ["513940210000000"] [2026-07-09 13:02:48.592] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 13:02:48.593] [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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:02:48.594] [DEBUG] QUERY OK source="address" db=0.5ms 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` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:02:48.594] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 13:02:48.595] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 13:02:48.632] [DEBUG] QUERY OK db=35.0ms idle=3.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", "ceb03863972797e725e254930e649236b8e85394661940ed72cae2b240bf1528", 1027, 969, ~U[2026-07-09 13:02:48Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:02:48.632] [INFO ] AutoPushService: Created push log 33405 for MF919 params.zip [2026-07-09 13:02:48.632] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 1027, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:02:48.632] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:02:48.632] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 13:02:48.633] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 13:02:48.638] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 13:02:48.673] [DEBUG] QUERY OK db=34.0ms queue=0.3ms 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`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "af0457e1980b7f4fe3a6b6bcd97c266cbd8be9d173e04e5b7e164d565885670e", 1091, 2334, ~U[2026-07-09 13:02:48Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:02:48.674] [INFO ] AutoPushService: Created push log 33406 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 13:02:48.674] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 1091, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:02:48.674] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:02:48.674] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 13:02:48.677] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=41.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 13:02:48.677] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 13:02:48.680] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:02:48.681] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 13:02:48.683] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:02:48.683] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:02:48.683] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:02:48.683] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 13:02:48.683] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 13:02:48.684] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:02:48.685] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 13:02:48.726] [DEBUG] QUERY OK source="tms_terminals" db=41.2ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:02:48], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:02:48.729] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=42.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-09 13:02:48.730] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-09 13:02:48.730] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 13:02:48.731] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:02:48.770] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:02:48], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:02:48.806] [DEBUG] QUERY OK db=35.4ms idle=39.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T13:02:48Z", ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:02:48.806] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46774, oid: "organization_id", upload_time: "2026-07-09T13:02:48Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:48], updated_at: ~N[2026-07-09 13:02:48]} [2026-07-09 13:02:48.806] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:02:48Z", "value" => "online"} [2026-07-09 13:02:48.926] [DEBUG] QUERY OK db=118.5ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T13:02:48Z", "online", "status", 46774, ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:48.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400548, itemkey: "status", value: "online", timestamp: "2026-07-09T13:02:48Z", message: "Terminal status update", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:48], updated_at: ~N[2026-07-09 13:02:48]}} [2026-07-09 13:02:48.927] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 13:02:48.927] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:02:48Z", "value" => "100"} [2026-07-09 13:02:48.969] [DEBUG] QUERY OK db=41.2ms idle=121.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T13:02:48Z", "100", "battery", 46774, ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:48.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400549, itemkey: "battery", value: "100", timestamp: "2026-07-09T13:02:48Z", message: "Battery level", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:48], updated_at: ~N[2026-07-09 13:02:48]}} [2026-07-09 13:02:48.969] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:02:48Z", "value" => "online"} [2026-07-09 13:02:49.035] [DEBUG] QUERY OK db=65.6ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T13:02:48Z", "online", "network", 46774, ~N[2026-07-09 13:02:48], ~N[2026-07-09 13:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400550, itemkey: "network", value: "online", timestamp: "2026-07-09T13:02:48Z", message: "Network connectivity", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:48], updated_at: ~N[2026-07-09 13:02:48]}} [2026-07-09 13:02:49.036] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 13:02:49.036] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:02:48Z", "value" => "1"} [2026-07-09 13:02:49.079] [DEBUG] QUERY OK db=43.3ms queue=0.1ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-09T13:02:48Z", "1", "cpu", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400551, itemkey: "cpu", value: "1", timestamp: "2026-07-09T13:02:48Z", message: "CPU usage percentage", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.080] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:02:48Z", "value" => "65"} [2026-07-09 13:02:49.117] [DEBUG] QUERY OK db=36.2ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T13:02:48Z", "65", "memory", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400552, itemkey: "memory", value: "65", timestamp: "2026-07-09T13:02:48Z", message: "Memory usage percentage", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.117] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:02:49.152] [DEBUG] QUERY OK db=33.2ms queue=0.5ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["EMV Config", "1.0.0", "emv_config", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400553, itemkey: "emv_config", value: "1.0.0", timestamp: nil, message: "EMV Config", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.153] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:02:49.219] [DEBUG] QUERY OK db=22.8ms queue=43.5ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Parameter config", "1.0.0", "parameter_config", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400554, itemkey: "parameter_config", value: "1.0.0", timestamp: nil, message: "Parameter config", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.220] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 13:02:49.299] [DEBUG] QUERY OK db=35.8ms queue=43.3ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400555, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.301] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 13:02:49.372] [DEBUG] QUERY OK db=30.3ms queue=40.5ms idle=81.5ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46774, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400556, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.372] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:02:49.372] [INFO ] Incoming JSON payload: {"oid":"23d74bfc-f5f0-4ed6-8059-9ee9b14224b0","sn":"98251226730001","uploadTime":"2026-07-09T21:05:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"ram_free_mb","value":"905","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:05:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:02:49.374] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "23d74bfc-f5f0-4ed6-8059-9ee9b14224b0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:05:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:05:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:05:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:05:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "905"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:05:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:05:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:05:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:05:57Z", "vendor" => "morefun"} [2026-07-09 13:02:49.374] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:02:49.374] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:02:49.374] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:02:49.376] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=76.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-07-09 13:02:49.377] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:02:49.377] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:02:49.379] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:02:49.379] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:02:49.434] [DEBUG] QUERY OK source="tms_terminals" db=54.3ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:02:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:02:49.434] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:02:49.435] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:02:49.480] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:02:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:02:49.536] [DEBUG] QUERY OK db=56.2ms idle=28.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "23d74bfc-f5f0-4ed6-8059-9ee9b14224b0", "2026-07-09T21:05:57Z", ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:02:49.536] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46775, oid: "23d74bfc-f5f0-4ed6-8059-9ee9b14224b0", upload_time: "2026-07-09T21:05:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]} [2026-07-09 13:02:49.537] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:05:57Z", "value" => "morefun"} [2026-07-09 13:02:49.584] [DEBUG] QUERY OK db=46.9ms queue=0.5ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "morefun", "vendor", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400557, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.585] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:05:57Z", "value" => "kiosk_launcher"} [2026-07-09 13:02:49.650] [DEBUG] QUERY OK db=62.9ms queue=0.4ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "kiosk_launcher", "model", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400558, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.651] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:05:57Z", "value" => "1.0"} [2026-07-09 13:02:49.674] [DEBUG] QUERY OK db=22.7ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "1.0", "app_version", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400559, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.676] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:05:57Z", "value" => "13"} [2026-07-09 13:02:49.721] [DEBUG] QUERY OK db=43.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "13", "android_version", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400560, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.722] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "905"} [2026-07-09 13:02:49.769] [DEBUG] QUERY OK db=46.9ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "905", "ram_free_mb", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400561, itemkey: "ram_free_mb", value: "905", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.770] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:05:57Z", "value" => "WIFI"} [2026-07-09 13:02:49.805] [DEBUG] QUERY OK db=32.1ms queue=2.5ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "WIFI", "network_type", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400562, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.806] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:05:57Z", "value" => "true"} [2026-07-09 13:02:49.830] [DEBUG] QUERY OK db=24.5ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "true", "kiosk_active", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400563, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.832] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:05:57Z", "value" => ""} [2026-07-09 13:02:49.910] [DEBUG] QUERY OK db=36.4ms queue=41.0ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:05:57Z", "sim_operator", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400564, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.910] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"} [2026-07-09 13:02:49.952] [DEBUG] QUERY OK db=41.6ms idle=80.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "UNKNOWN", "sim_number", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400565, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.953] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"} [2026-07-09 13:02:49.980] [DEBUG] QUERY OK db=26.6ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "UNKNOWN", "sim_iccid", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:49.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400566, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:49.980] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.012] [DEBUG] QUERY OK db=31.6ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "UNKNOWN", "sim_imsi", 46775, ~N[2026-07-09 13:02:49], ~N[2026-07-09 13:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400567, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:49], updated_at: ~N[2026-07-09 13:02:49]}} [2026-07-09 13:02:50.013] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.037] [DEBUG] QUERY OK db=23.7ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "UNKNOWN", "sim_iccid2", 46775, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400568, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.037] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:05:57Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.072] [DEBUG] QUERY OK db=34.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "UNKNOWN", "sim_imsi2", 46775, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400569, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.074] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "11"} [2026-07-09 13:02:50.109] [DEBUG] QUERY OK db=34.9ms queue=0.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "11", "data_usage_mb", 46775, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400570, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.110] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:05:57Z", "value" => "0"} [2026-07-09 13:02:50.127] [DEBUG] QUERY OK db=16.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:05:57Z", "0", "mobile_data_mb", 46775, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400571, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.128] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:02:50.178] [DEBUG] QUERY OK db=49.4ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46775, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400572, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:05:57Z", message: nil, status_log_id: 46775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.179] [WARN ] Unexpected async result [2026-07-09 13:02:50.180] [WARN ] Unexpected async result [2026-07-09 13:02:50.180] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:02:50.180] [INFO ] Incoming JSON payload: {"oid":"9e61ed04-79a3-4b11-bd1d-5cd2b29048b5","sn":"98250904730001","uploadTime":"2026-07-09T13:02:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:02:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:02:50.181] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9e61ed04-79a3-4b11-bd1d-5cd2b29048b5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:02:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:02:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:02:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:02:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:02:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:02:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:02:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:02:49Z", "vendor" => "morefun"} [2026-07-09 13:02:50.181] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:02:50.181] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:02:50.181] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:02:50.182] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=54.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-07-09 13:02:50.183] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=4.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:02:50.183] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:02:50.184] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:02:50.184] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:02:50.225] [DEBUG] QUERY OK source="tms_terminals" db=39.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:02:50], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:02:50.225] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:02:50.226] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=41.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:02:50.271] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:02:50], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:02:50.305] [DEBUG] QUERY OK db=33.0ms idle=45.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "9e61ed04-79a3-4b11-bd1d-5cd2b29048b5", "2026-07-09T13:02:49Z", ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:02:50.305] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46776, oid: "9e61ed04-79a3-4b11-bd1d-5cd2b29048b5", upload_time: "2026-07-09T13:02:49Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]} [2026-07-09 13:02:50.305] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:02:49Z", "value" => "morefun"} [2026-07-09 13:02:50.357] [DEBUG] QUERY OK db=51.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "morefun", "vendor", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400573, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.361] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:02:49Z", "value" => "kiosk_launcher"} [2026-07-09 13:02:50.393] [DEBUG] QUERY OK db=32.1ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "kiosk_launcher", "model", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400574, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.394] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:02:49Z", "value" => "1.0"} [2026-07-09 13:02:50.416] [DEBUG] QUERY OK db=21.5ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "1.0", "app_version", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400575, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.420] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:02:49Z", "value" => "13"} [2026-07-09 13:02:50.461] [DEBUG] QUERY OK db=40.8ms queue=0.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "13", "android_version", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400576, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.462] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "1080"} [2026-07-09 13:02:50.500] [DEBUG] QUERY OK db=37.7ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "1080", "ram_free_mb", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400577, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.500] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:02:49Z", "value" => "WIFI"} [2026-07-09 13:02:50.551] [DEBUG] QUERY OK db=49.9ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "WIFI", "network_type", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400578, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.551] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:02:49Z", "value" => "true"} [2026-07-09 13:02:50.591] [DEBUG] QUERY OK db=39.7ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "true", "kiosk_active", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400579, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.592] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:02:49Z", "value" => ""} [2026-07-09 13:02:50.622] [DEBUG] QUERY OK db=29.3ms queue=0.5ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:02:49Z", "sim_operator", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400580, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.622] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.675] [DEBUG] QUERY OK db=52.0ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "UNKNOWN", "sim_number", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400581, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.675] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.715] [DEBUG] QUERY OK db=39.6ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "UNKNOWN", "sim_iccid", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400582, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.715] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.743] [DEBUG] QUERY OK db=26.7ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "UNKNOWN", "sim_imsi", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400583, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.744] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.789] [DEBUG] QUERY OK db=44.8ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "UNKNOWN", "sim_iccid2", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400584, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:02:49Z", "value" => "UNKNOWN"} [2026-07-09 13:02:50.834] [DEBUG] QUERY OK db=43.3ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "UNKNOWN", "sim_imsi2", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400585, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.835] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "27"} [2026-07-09 13:02:50.887] [DEBUG] QUERY OK db=51.0ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "27", "data_usage_mb", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400586, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.887] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:02:49Z", "value" => "0"} [2026-07-09 13:02:50.928] [DEBUG] QUERY OK db=40.5ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02:49Z", "0", "mobile_data_mb", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400587, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:02:50.929] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:02:50.981] [DEBUG] QUERY OK db=51.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:02: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46776, ~N[2026-07-09 13:02:50], ~N[2026-07-09 13:02:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:02:50.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400588, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:02:49Z", message: nil, status_log_id: 46776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:02:50], updated_at: ~N[2026-07-09 13:02:50]}} [2026-07-09 13:03:09.939] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 13:03:09.939] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-09T13:03:08Z","org.device":[{"itemkey":"battery","value":68,"timestamp":"2026-07-09T13:03:08Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-09T13:03:08Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-09T13:03:08Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-09T13:03:08Z","message":""}]} [2026-07-09 13:03:09.939] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => 68}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:03:08Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-09T13:03:08Z"} [2026-07-09 13:03:09.940] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:03:09.942] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=1055.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:03:09.942] [INFO ] Terminal updated: 61251020798002 [2026-07-09 13:03:09.985] [DEBUG] QUERY OK source="tms_terminals" db=42.3ms queue=0.1ms idle=413.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:03:09], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:03:09.987] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:03:10.039] [DEBUG] QUERY OK source="tms_terminals" db=50.5ms queue=1.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:03:09], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:03:10.064] [DEBUG] QUERY OK db=24.1ms idle=52.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-09T13:03:08Z", ~N[2026-07-09 13:03:10], ~N[2026-07-09 13:03:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:03:10.064] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46777, oid: "org-id-placeholder", upload_time: "2026-07-09T13:03:08Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:10], updated_at: ~N[2026-07-09 13:03:10]} [2026-07-09 13:03:10.064] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => 68} [2026-07-09 13:03:10.109] [DEBUG] QUERY OK db=44.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:08Z", "68", "battery", 46777, ~N[2026-07-09 13:03:10], ~N[2026-07-09 13:03:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:10.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400589, itemkey: "battery", value: "68", timestamp: "2026-07-09T13:03:08Z", message: nil, status_log_id: 46777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:10], updated_at: ~N[2026-07-09 13:03:10]}} [2026-07-09 13:03:10.109] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:03:08Z", "value" => 50} [2026-07-09 13:03:10.144] [DEBUG] QUERY OK db=34.2ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-09T13:03:08Z", "50", "memory", 46777, ~N[2026-07-09 13:03:10], ~N[2026-07-09 13:03:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:10.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400590, itemkey: "memory", value: "50", timestamp: "2026-07-09T13:03:08Z", message: "Normal", status_log_id: 46777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:10], updated_at: ~N[2026-07-09 13:03:10]}} [2026-07-09 13:03:10.144] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => 50} [2026-07-09 13:03:10.189] [DEBUG] QUERY OK db=44.3ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:08Z", "50", "cpu", 46777, ~N[2026-07-09 13:03:10], ~N[2026-07-09 13:03:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:10.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400591, itemkey: "cpu", value: "50", timestamp: "2026-07-09T13:03:08Z", message: nil, status_log_id: 46777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:10], updated_at: ~N[2026-07-09 13:03:10]}} [2026-07-09 13:03:10.190] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:03:08Z", "value" => "online"} [2026-07-09 13:03:10.222] [DEBUG] QUERY OK db=32.3ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:08Z", "online", "network", 46777, ~N[2026-07-09 13:03:10], ~N[2026-07-09 13:03:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:10.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400592, itemkey: "network", value: "online", timestamp: "2026-07-09T13:03:08Z", message: nil, status_log_id: 46777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:10], updated_at: ~N[2026-07-09 13:03:10]}} [2026-07-09 13:03:10.223] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-09 13:03:19.342] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:03:19.342] [INFO ] Incoming JSON payload: {"oid":"81ec62f9-c48d-4960-9eef-7d516ebe5b98","sn":"98251226730001","uploadTime":"2026-07-09T21:06:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"ram_free_mb","value":"902","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:06:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:03:19.344] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "81ec62f9-c48d-4960-9eef-7d516ebe5b98", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:06:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:06:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:06:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:06:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "902"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:06:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:06:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:06:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:06:27Z", "vendor" => "morefun"} [2026-07-09 13:03:19.344] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:03:19.345] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:03:19.345] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:03:19.347] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=790.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-07-09 13:03:19.348] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms 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-07-09 13:03:19.348] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:03:19.351] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:03:19.353] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:03:19.378] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:03:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:03:19.378] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:03:19.380] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:03:19.431] [DEBUG] QUERY OK source="tms_terminals" db=48.8ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:03:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:03:19.477] [DEBUG] QUERY OK db=45.4ms idle=51.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "81ec62f9-c48d-4960-9eef-7d516ebe5b98", "2026-07-09T21:06:27Z", ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:03:19.479] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46778, oid: "81ec62f9-c48d-4960-9eef-7d516ebe5b98", upload_time: "2026-07-09T21:06:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]} [2026-07-09 13:03:19.481] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:06:27Z", "value" => "morefun"} [2026-07-09 13:03:19.512] [DEBUG] QUERY OK db=30.7ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "morefun", "vendor", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400593, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.513] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:06:27Z", "value" => "kiosk_launcher"} [2026-07-09 13:03:19.666] [DEBUG] QUERY OK db=152.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "kiosk_launcher", "model", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400594, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.667] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:06:27Z", "value" => "1.0"} [2026-07-09 13:03:19.698] [DEBUG] QUERY OK db=30.7ms idle=106.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "1.0", "app_version", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400595, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.699] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:06:27Z", "value" => "13"} [2026-07-09 13:03:19.723] [DEBUG] QUERY OK db=23.8ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "13", "android_version", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400596, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.724] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "902"} [2026-07-09 13:03:19.767] [DEBUG] QUERY OK db=42.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "902", "ram_free_mb", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400597, itemkey: "ram_free_mb", value: "902", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.773] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:06:27Z", "value" => "WIFI"} [2026-07-09 13:03:19.833] [DEBUG] QUERY OK db=52.0ms queue=0.1ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "WIFI", "network_type", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400598, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.839] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:06:27Z", "value" => "true"} [2026-07-09 13:03:19.880] [DEBUG] QUERY OK db=40.5ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "true", "kiosk_active", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400599, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.885] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:06:27Z", "value" => ""} [2026-07-09 13:03:19.930] [DEBUG] QUERY OK db=44.2ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:06:27Z", "sim_operator", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400600, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.931] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"} [2026-07-09 13:03:19.966] [DEBUG] QUERY OK db=35.3ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "UNKNOWN", "sim_number", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:19.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400601, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:19.967] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.016] [DEBUG] QUERY OK db=49.4ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "UNKNOWN", "sim_iccid", 46778, ~N[2026-07-09 13:03:19], ~N[2026-07-09 13:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400602, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:19], updated_at: ~N[2026-07-09 13:03:19]}} [2026-07-09 13:03:20.017] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.055] [DEBUG] QUERY OK db=37.4ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "UNKNOWN", "sim_imsi", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400603, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.121] [DEBUG] QUERY OK db=64.0ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "UNKNOWN", "sim_iccid2", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400604, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.123] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:06:27Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.140] [DEBUG] QUERY OK db=16.3ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "UNKNOWN", "sim_imsi2", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400605, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.140] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "11"} [2026-07-09 13:03:20.166] [DEBUG] QUERY OK db=25.4ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "11", "data_usage_mb", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400606, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.166] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:06:27Z", "value" => "0"} [2026-07-09 13:03:20.211] [DEBUG] QUERY OK db=44.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:27Z", "0", "mobile_data_mb", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400607, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.214] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:03:20.257] [DEBUG] QUERY OK db=38.8ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46778, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400608, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:06:27Z", message: nil, status_log_id: 46778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.259] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:03:20.259] [INFO ] Incoming JSON payload: {"oid":"7865b87e-9f1b-4974-ab86-add8e4adb8c1","sn":"98250904730001","uploadTime":"2026-07-09T13:03:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:03:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:03:20.264] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7865b87e-9f1b-4974-ab86-add8e4adb8c1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:03:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:03:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:03:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:03:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:03:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:03:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:03:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:03:19Z", "vendor" => "morefun"} [2026-07-09 13:03:20.265] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:03:20.265] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:03:20.266] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:03:20.267] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=54.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-07-09 13:03:20.269] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.1ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:03:20.269] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:03:20.271] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:03:20.271] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:03:20.320] [DEBUG] QUERY OK source="tms_terminals" db=47.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:03:20], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:03:20.320] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:03:20.322] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=50.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:03:20.490] [DEBUG] QUERY OK source="tms_terminals" db=166.9ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:03:20], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:03:20.555] [DEBUG] QUERY OK db=64.7ms idle=167.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "7865b87e-9f1b-4974-ab86-add8e4adb8c1", "2026-07-09T13:03:19Z", ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:03:20.555] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46779, oid: "7865b87e-9f1b-4974-ab86-add8e4adb8c1", upload_time: "2026-07-09T13:03:19Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]} [2026-07-09 13:03:20.555] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:03:19Z", "value" => "morefun"} [2026-07-09 13:03:20.586] [DEBUG] QUERY OK db=29.9ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "morefun", "vendor", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400609, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.586] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:03:19Z", "value" => "kiosk_launcher"} [2026-07-09 13:03:20.612] [DEBUG] QUERY OK db=25.4ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "kiosk_launcher", "model", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400610, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.612] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:03:19Z", "value" => "1.0"} [2026-07-09 13:03:20.649] [DEBUG] QUERY OK db=36.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "1.0", "app_version", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400611, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.649] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:03:19Z", "value" => "13"} [2026-07-09 13:03:20.686] [DEBUG] QUERY OK db=36.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "13", "android_version", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400612, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.687] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "1085"} [2026-07-09 13:03:20.724] [DEBUG] QUERY OK db=36.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "1085", "ram_free_mb", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400613, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.724] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:03:19Z", "value" => "WIFI"} [2026-07-09 13:03:20.754] [DEBUG] QUERY OK db=29.9ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "WIFI", "network_type", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400614, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.755] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:03:19Z", "value" => "true"} [2026-07-09 13:03:20.783] [DEBUG] QUERY OK db=27.6ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "true", "kiosk_active", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400615, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.783] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:03:19Z", "value" => ""} [2026-07-09 13:03:20.825] [DEBUG] QUERY OK db=41.4ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:03:19Z", "sim_operator", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400616, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.826] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.853] [DEBUG] QUERY OK db=27.5ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "UNKNOWN", "sim_number", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400617, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.854] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.877] [DEBUG] QUERY OK db=23.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "UNKNOWN", "sim_iccid", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400618, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.878] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.915] [DEBUG] QUERY OK db=35.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "UNKNOWN", "sim_imsi", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400619, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.915] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"} [2026-07-09 13:03:20.957] [DEBUG] QUERY OK db=41.2ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "UNKNOWN", "sim_iccid2", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:20.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400620, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:20.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:03:19Z", "value" => "UNKNOWN"} [2026-07-09 13:03:21.004] [DEBUG] QUERY OK db=45.9ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "UNKNOWN", "sim_imsi2", 46779, ~N[2026-07-09 13:03:20], ~N[2026-07-09 13:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:21.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400621, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:20], updated_at: ~N[2026-07-09 13:03:20]}} [2026-07-09 13:03:21.004] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "27"} [2026-07-09 13:03:21.068] [DEBUG] QUERY OK db=63.7ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "27", "data_usage_mb", 46779, ~N[2026-07-09 13:03:21], ~N[2026-07-09 13:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:21.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400622, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:21], updated_at: ~N[2026-07-09 13:03:21]}} [2026-07-09 13:03:21.069] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:03:19Z", "value" => "0"} [2026-07-09 13:03:21.147] [DEBUG] QUERY OK db=77.6ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:19Z", "0", "mobile_data_mb", 46779, ~N[2026-07-09 13:03:21], ~N[2026-07-09 13:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:21.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400623, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:21], updated_at: ~N[2026-07-09 13:03:21]}} [2026-07-09 13:03:21.148] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:03:21.266] [DEBUG] QUERY OK db=116.9ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46779, ~N[2026-07-09 13:03:21], ~N[2026-07-09 13:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:21.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400624, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:03:19Z", message: nil, status_log_id: 46779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:21], updated_at: ~N[2026-07-09 13:03:21]}} [2026-07-09 13:03:49.790] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:03:49.790] [INFO ] Incoming JSON payload: {"oid":"3c10a01a-ce15-47ef-b10d-4af2708baf3b","sn":"98251226730001","uploadTime":"2026-07-09T21:06:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"ram_free_mb","value":"904","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:06:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:06: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:03:49.792] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3c10a01a-ce15-47ef-b10d-4af2708baf3b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:06:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:06:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:06:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:06:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "904"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:06:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:06:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:06:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:06: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:06:57Z", "vendor" => "morefun"} [2026-07-09 13:03:49.792] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:03:49.792] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:03:49.792] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:03:49.793] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=903.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-07-09 13:03:49.794] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=142.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-07-09 13:03:49.795] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:03:49.795] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:03:49.796] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:03:49.841] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:03:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:03:49.841] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:03:49.842] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=45.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:697 [2026-07-09 13:03:49.891] [DEBUG] QUERY OK source="tms_terminals" db=48.2ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:03:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:03:49.914] [DEBUG] QUERY OK db=23.0ms idle=49.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3c10a01a-ce15-47ef-b10d-4af2708baf3b", "2026-07-09T21:06:57Z", ~N[2026-07-09 13:03:49], ~N[2026-07-09 13:03:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:03:49.914] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46780, oid: "3c10a01a-ce15-47ef-b10d-4af2708baf3b", upload_time: "2026-07-09T21:06:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:49], updated_at: ~N[2026-07-09 13:03:49]} [2026-07-09 13:03:49.914] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:06:57Z", "value" => "morefun"} [2026-07-09 13:03:49.953] [DEBUG] QUERY OK db=38.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "morefun", "vendor", 46780, ~N[2026-07-09 13:03:49], ~N[2026-07-09 13:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:49.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400625, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:49], updated_at: ~N[2026-07-09 13:03:49]}} [2026-07-09 13:03:49.954] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:06:57Z", "value" => "kiosk_launcher"} [2026-07-09 13:03:49.991] [DEBUG] QUERY OK db=36.5ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "kiosk_launcher", "model", 46780, ~N[2026-07-09 13:03:49], ~N[2026-07-09 13:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:49.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400626, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:49], updated_at: ~N[2026-07-09 13:03:49]}} [2026-07-09 13:03:49.991] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:06:57Z", "value" => "1.0"} [2026-07-09 13:03:50.057] [DEBUG] QUERY OK db=65.1ms queue=0.1ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "1.0", "app_version", 46780, ~N[2026-07-09 13:03:49], ~N[2026-07-09 13:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400627, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:49], updated_at: ~N[2026-07-09 13:03:49]}} [2026-07-09 13:03:50.057] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:06:57Z", "value" => "13"} [2026-07-09 13:03:50.123] [DEBUG] QUERY OK db=65.0ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "13", "android_version", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400628, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.124] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "904"} [2026-07-09 13:03:50.232] [DEBUG] QUERY OK db=107.1ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "904", "ram_free_mb", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400629, itemkey: "ram_free_mb", value: "904", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.232] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:06:57Z", "value" => "WIFI"} [2026-07-09 13:03:50.265] [DEBUG] QUERY OK db=33.0ms idle=109.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "WIFI", "network_type", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400630, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.266] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:06:57Z", "value" => "true"} [2026-07-09 13:03:50.311] [DEBUG] QUERY OK db=44.8ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "true", "kiosk_active", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400631, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.311] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:06:57Z", "value" => ""} [2026-07-09 13:03:50.369] [DEBUG] QUERY OK db=57.8ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:06:57Z", "sim_operator", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400632, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.370] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"} [2026-07-09 13:03:50.405] [DEBUG] QUERY OK db=34.8ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "UNKNOWN", "sim_number", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400633, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.405] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"} [2026-07-09 13:03:50.444] [DEBUG] QUERY OK db=37.9ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "UNKNOWN", "sim_iccid", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400634, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.444] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"} [2026-07-09 13:03:50.476] [DEBUG] QUERY OK db=31.8ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "UNKNOWN", "sim_imsi", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400635, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.477] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"} [2026-07-09 13:03:50.510] [DEBUG] QUERY OK db=33.3ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "UNKNOWN", "sim_iccid2", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400636, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.511] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:06:57Z", "value" => "UNKNOWN"} [2026-07-09 13:03:50.545] [DEBUG] QUERY OK db=34.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "UNKNOWN", "sim_imsi2", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400637, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.545] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "11"} [2026-07-09 13:03:50.578] [DEBUG] QUERY OK db=31.8ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "11", "data_usage_mb", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400638, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.578] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:06:57Z", "value" => "0"} [2026-07-09 13:03:50.625] [DEBUG] QUERY OK db=46.5ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06:57Z", "0", "mobile_data_mb", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400639, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.626] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:06: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:03:50.661] [DEBUG] QUERY OK db=33.9ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:06: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46780, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400640, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:06:57Z", message: nil, status_log_id: 46780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.662] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:03:50.663] [INFO ] Incoming JSON payload: {"oid":"ed008e83-9db0-4a2b-8119-37d6c6891b3e","sn":"98250904730001","uploadTime":"2026-07-09T13:03:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"ram_free_mb","value":"1086","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:03:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:03:50.664] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ed008e83-9db0-4a2b-8119-37d6c6891b3e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:03:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:03:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:03:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:03:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "1086"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:03:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:03:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:03:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:03:49Z", "vendor" => "morefun"} [2026-07-09 13:03:50.664] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:03:50.664] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:03:50.664] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:03:50.665] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=11.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-07-09 13:03:50.666] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=4.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-07-09 13:03:50.666] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:03:50.667] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:03:50.667] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:03:50.714] [DEBUG] QUERY OK source="tms_terminals" db=46.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:03:50], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:03:50.714] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:03:50.715] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:03:50.743] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:03:50], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:03:50.764] [DEBUG] QUERY OK db=19.9ms idle=28.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "ed008e83-9db0-4a2b-8119-37d6c6891b3e", "2026-07-09T13:03:49Z", ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:03:50.764] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46781, oid: "ed008e83-9db0-4a2b-8119-37d6c6891b3e", upload_time: "2026-07-09T13:03:49Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]} [2026-07-09 13:03:50.764] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:03:49Z", "value" => "morefun"} [2026-07-09 13:03:50.828] [DEBUG] QUERY OK db=63.6ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "morefun", "vendor", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400641, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.829] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:03:49Z", "value" => "kiosk_launcher"} [2026-07-09 13:03:50.854] [DEBUG] QUERY OK db=24.8ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "kiosk_launcher", "model", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400642, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.854] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:03:49Z", "value" => "1.0"} [2026-07-09 13:03:50.897] [DEBUG] QUERY OK db=42.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "1.0", "app_version", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400643, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.898] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:03:49Z", "value" => "13"} [2026-07-09 13:03:50.933] [DEBUG] QUERY OK db=34.6ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "13", "android_version", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400644, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.935] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "1086"} [2026-07-09 13:03:50.971] [DEBUG] QUERY OK db=35.2ms queue=0.2ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "1086", "ram_free_mb", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:50.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400645, itemkey: "ram_free_mb", value: "1086", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:50.972] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:03:49Z", "value" => "WIFI"} [2026-07-09 13:03:51.010] [DEBUG] QUERY OK db=38.2ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "WIFI", "network_type", 46781, ~N[2026-07-09 13:03:50], ~N[2026-07-09 13:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400646, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:50], updated_at: ~N[2026-07-09 13:03:50]}} [2026-07-09 13:03:51.011] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:03:49Z", "value" => "true"} [2026-07-09 13:03:51.052] [DEBUG] QUERY OK db=39.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "true", "kiosk_active", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400647, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.052] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:03:49Z", "value" => ""} [2026-07-09 13:03:51.087] [DEBUG] QUERY OK db=33.1ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:03:49Z", "sim_operator", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400648, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.090] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"} [2026-07-09 13:03:51.135] [DEBUG] QUERY OK db=44.7ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "UNKNOWN", "sim_number", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400649, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.136] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"} [2026-07-09 13:03:51.180] [DEBUG] QUERY OK db=43.5ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "UNKNOWN", "sim_iccid", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400650, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.180] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"} [2026-07-09 13:03:51.222] [DEBUG] QUERY OK db=41.0ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "UNKNOWN", "sim_imsi", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400651, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.222] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"} [2026-07-09 13:03:51.263] [DEBUG] QUERY OK db=40.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "UNKNOWN", "sim_iccid2", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400652, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.264] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:03:49Z", "value" => "UNKNOWN"} [2026-07-09 13:03:51.297] [DEBUG] QUERY OK db=33.0ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "UNKNOWN", "sim_imsi2", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400653, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.298] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "27"} [2026-07-09 13:03:51.321] [DEBUG] QUERY OK db=23.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "27", "data_usage_mb", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400654, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.322] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:03:49Z", "value" => "0"} [2026-07-09 13:03:51.384] [DEBUG] QUERY OK db=60.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03:49Z", "0", "mobile_data_mb", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400655, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:03:51.387] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:03:51.437] [DEBUG] QUERY OK db=48.7ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:03: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46781, ~N[2026-07-09 13:03:51], ~N[2026-07-09 13:03:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:03:51.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400656, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:03:49Z", message: nil, status_log_id: 46781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:03:51], updated_at: ~N[2026-07-09 13:03:51]}} [2026-07-09 13:04:19.877] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:04:19.877] [INFO ] Incoming JSON payload: {"oid":"4ba3d749-db7d-4475-b4af-ad6e58c48aa4","sn":"98251226730001","uploadTime":"2026-07-09T21:07:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:07:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:04:19.878] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4ba3d749-db7d-4475-b4af-ad6e58c48aa4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:07:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:07:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:07:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:07:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:07:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:07:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:07:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:07:28Z", "vendor" => "morefun"} [2026-07-09 13:04:19.878] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:04:19.879] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:04:19.879] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:04:19.879] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1141.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-07-09 13:04:19.880] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=139.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-07-09 13:04:19.880] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:04:19.881] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-07-09 13:04:19.882] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:04:19.917] [DEBUG] QUERY OK source="tms_terminals" db=34.4ms queue=0.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:04:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:04:19.917] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:04:19.918] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:04:20.050] [DEBUG] QUERY OK source="tms_terminals" db=131.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:04:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:04:20.085] [DEBUG] QUERY OK db=34.5ms idle=132.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4ba3d749-db7d-4475-b4af-ad6e58c48aa4", "2026-07-09T21:07:28Z", ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:04:20.085] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46782, oid: "4ba3d749-db7d-4475-b4af-ad6e58c48aa4", upload_time: "2026-07-09T21:07:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]} [2026-07-09 13:04:20.085] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:07:28Z", "value" => "morefun"} [2026-07-09 13:04:20.110] [DEBUG] QUERY OK db=24.3ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "morefun", "vendor", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400657, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.110] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:07:28Z", "value" => "kiosk_launcher"} [2026-07-09 13:04:20.144] [DEBUG] QUERY OK db=33.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "kiosk_launcher", "model", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400658, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.145] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:07:28Z", "value" => "1.0"} [2026-07-09 13:04:20.174] [DEBUG] QUERY OK db=28.7ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "1.0", "app_version", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400659, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.174] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:07:28Z", "value" => "13"} [2026-07-09 13:04:20.198] [DEBUG] QUERY OK db=22.9ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "13", "android_version", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400660, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.198] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "891"} [2026-07-09 13:04:20.236] [DEBUG] QUERY OK db=37.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "891", "ram_free_mb", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400661, itemkey: "ram_free_mb", value: "891", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.236] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:07:28Z", "value" => "WIFI"} [2026-07-09 13:04:20.267] [DEBUG] QUERY OK db=30.3ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "WIFI", "network_type", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400662, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.267] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:07:28Z", "value" => "true"} [2026-07-09 13:04:20.307] [DEBUG] QUERY OK db=38.6ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "true", "kiosk_active", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400663, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.307] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:07:28Z", "value" => ""} [2026-07-09 13:04:20.354] [DEBUG] QUERY OK db=46.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:07:28Z", "sim_operator", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400664, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.355] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"} [2026-07-09 13:04:20.416] [DEBUG] QUERY OK db=61.2ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "UNKNOWN", "sim_number", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400665, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.416] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"} [2026-07-09 13:04:20.472] [DEBUG] QUERY OK db=55.3ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "UNKNOWN", "sim_iccid", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400666, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.472] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"} [2026-07-09 13:04:20.499] [DEBUG] QUERY OK db=26.6ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "UNKNOWN", "sim_imsi", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400667, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.500] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"} [2026-07-09 13:04:20.523] [DEBUG] QUERY OK db=22.9ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "UNKNOWN", "sim_iccid2", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400668, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.523] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:07:28Z", "value" => "UNKNOWN"} [2026-07-09 13:04:20.547] [DEBUG] QUERY OK db=23.0ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "UNKNOWN", "sim_imsi2", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400669, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.547] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "11"} [2026-07-09 13:04:20.584] [DEBUG] QUERY OK db=36.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "11", "data_usage_mb", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400670, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.584] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:07:28Z", "value" => "0"} [2026-07-09 13:04:20.625] [DEBUG] QUERY OK db=40.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:28Z", "0", "mobile_data_mb", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400671, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.626] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:04:20.660] [DEBUG] QUERY OK db=33.1ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46782, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400672, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:07:28Z", message: nil, status_log_id: 46782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.661] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:04:20.661] [INFO ] Incoming JSON payload: {"oid":"de3ce6b6-c74e-45ed-be47-0461afa2c56e","sn":"98250904730001","uploadTime":"2026-07-09T13:04:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:04:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:04: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:04:20.663] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "de3ce6b6-c74e-45ed-be47-0461afa2c56e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:04:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:04:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:04:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:04:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:04:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:04:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:04:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:04: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:04:19Z", "vendor" => "morefun"} [2026-07-09 13:04:20.664] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:04:20.665] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:04:20.665] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:04:20.666] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:04:20.667] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=7.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-07-09 13:04:20.667] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:04:20.668] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:04:20.668] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:04:20.717] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:04:20], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:04:20.718] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:04:20.719] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=49.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:04:20.751] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:04:20], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:04:20.769] [DEBUG] QUERY OK db=16.9ms idle=9.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "de3ce6b6-c74e-45ed-be47-0461afa2c56e", "2026-07-09T13:04:19Z", ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:04:20.769] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46783, oid: "de3ce6b6-c74e-45ed-be47-0461afa2c56e", upload_time: "2026-07-09T13:04:19Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]} [2026-07-09 13:04:20.769] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:04:19Z", "value" => "morefun"} [2026-07-09 13:04:20.809] [DEBUG] QUERY OK db=39.4ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "morefun", "vendor", 46783, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400673, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.809] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:04:19Z", "value" => "kiosk_launcher"} [2026-07-09 13:04:20.870] [DEBUG] QUERY OK db=60.6ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "kiosk_launcher", "model", 46783, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400674, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.871] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:04:19Z", "value" => "1.0"} [2026-07-09 13:04:20.923] [DEBUG] QUERY OK db=52.0ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "1.0", "app_version", 46783, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400675, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.924] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:04:19Z", "value" => "13"} [2026-07-09 13:04:20.957] [DEBUG] QUERY OK db=33.1ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "13", "android_version", 46783, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:20.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400676, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:20.958] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "1082"} [2026-07-09 13:04:21.011] [DEBUG] QUERY OK db=52.4ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "1082", "ram_free_mb", 46783, ~N[2026-07-09 13:04:20], ~N[2026-07-09 13:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400677, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:20], updated_at: ~N[2026-07-09 13:04:20]}} [2026-07-09 13:04:21.011] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:04:19Z", "value" => "WIFI"} [2026-07-09 13:04:21.061] [DEBUG] QUERY OK db=47.7ms queue=1.8ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "WIFI", "network_type", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400678, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.062] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:04:19Z", "value" => "true"} [2026-07-09 13:04:21.098] [DEBUG] QUERY OK db=36.4ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "true", "kiosk_active", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400679, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.099] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:04:19Z", "value" => ""} [2026-07-09 13:04:21.133] [DEBUG] QUERY OK db=33.4ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:04:19Z", "sim_operator", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400680, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.133] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"} [2026-07-09 13:04:21.176] [DEBUG] QUERY OK db=42.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "UNKNOWN", "sim_number", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400681, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.176] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"} [2026-07-09 13:04:21.211] [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-07-09T13:04:19Z", "UNKNOWN", "sim_iccid", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400682, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.211] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"} [2026-07-09 13:04:21.236] [DEBUG] QUERY OK db=23.8ms idle=4.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "UNKNOWN", "sim_imsi", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400683, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.236] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"} [2026-07-09 13:04:21.276] [DEBUG] QUERY OK db=39.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "UNKNOWN", "sim_iccid2", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400684, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.276] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:04:19Z", "value" => "UNKNOWN"} [2026-07-09 13:04:21.306] [DEBUG] QUERY OK db=29.5ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "UNKNOWN", "sim_imsi2", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400685, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.306] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "27"} [2026-07-09 13:04:21.348] [DEBUG] QUERY OK db=40.8ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "27", "data_usage_mb", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400686, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.348] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:04:19Z", "value" => "0"} [2026-07-09 13:04:21.393] [DEBUG] QUERY OK db=44.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:19Z", "0", "mobile_data_mb", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400687, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:21.394] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:04: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:04:21.460] [DEBUG] QUERY OK db=64.4ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46783, ~N[2026-07-09 13:04:21], ~N[2026-07-09 13:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:21.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400688, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:04:19Z", message: nil, status_log_id: 46783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:21], updated_at: ~N[2026-07-09 13:04:21]}} [2026-07-09 13:04:23.433] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:04:23.433] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T21:07:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T21:07:31Z","value":"23"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T21:07:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T21:07:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-09T21:07:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-09T21:07:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-09T21:07:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-09T21:07:31Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-09T21:07:31Z","vendor":"MoreFun"} [2026-07-09 13:04:23.433] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T21:07:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T21:07:31Z", "value" => "23"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T21:07:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T21:07:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-09T21:07:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-09T21:07:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-09T21:07:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-09T21:07:31Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-07-09T21:07:31Z", "vendor" => "MoreFun"} [2026-07-09 13:04:23.433] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:04:23.434] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:04:23.434] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-09 13:04:23.434] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=686.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-07-09 13:04:23.435] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=542.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-07-09 13:04:23.437] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms 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-07-09 13:04:23.439] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms 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-07-09 13:04:23.440] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms 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 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 13:04:23.480] [DEBUG] QUERY OK source="pos_merchant" db=40.0ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:04:23.483] [DEBUG] QUERY OK db=2.0ms queue=0.4ms idle=1577.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 ["490603880000000"] [2026-07-09 13:04:23.483] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-09 13:04:23.485] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms idle=43.7ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:04:23.486] [DEBUG] QUERY OK source="address" db=1.3ms 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` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:04:23.486] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-09 13:04:23.487] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-09 13:04:23.538] [DEBUG] QUERY OK db=47.5ms queue=0.7ms 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", "4a672a3e21aea7b77eed4d23281d94b8467fb826fa40a926c3da615058f3e39a", 1892, 915, ~U[2026-07-09 13:04:23Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:04:23.538] [INFO ] AutoPushService: Created push log 33407 for MF919 params.zip [2026-07-09 13:04:23.539] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 1892, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:04:23.539] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-09 13:04:23.539] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-09 13:04:23.540] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=52.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-07-09 13:04:23.544] [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-07-09 13:04:23.584] [DEBUG] QUERY OK db=38.0ms queue=0.5ms idle=8.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", "be9ad3433edca6dce225ae5721c73c8109f60861ad3526eff328977d5059671f", 1924, 17947, ~U[2026-07-09 13:04:23Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:04:23.584] [INFO ] AutoPushService: Created push log 33408 for MF919 l3config.zip (version: 1.0.1) [2026-07-09 13:04:23.584] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 1924, "type" => "tms_command", "version" => "1.0.1"} [2026-07-09 13:04:23.584] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-09 13:04:23.584] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-09 13:04:23.585] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=44.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-07-09 13:04:23.585] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-09 13:04:23.586] [DEBUG] QUERY OK source="tms_terminals" db=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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:04:23.586] [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-07-09 13:04:23.587] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:04:23.587] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:04:23.587] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:04:23.588] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-09 13:04:23.589] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-09 13:04:23.589] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-09 13:04:23.590] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:04:23.660] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms queue=41.8ms idle=1.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-07-09 13:04:23], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-07-09 13:04:23.660] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:04:23.660] [INFO ] Event published: terminal_updated [2026-07-09 13:04:23.660] [DEBUG] Processing terminal event: terminal_updated [2026-07-09 13:04:23.660] [INFO ] Processing terminal_updated event for terminal 33 [2026-07-09 13:04:23.661] [INFO ] Changed fields: [:vendor, :model] [2026-07-09 13:04:23.662] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms idle=70.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-07-09 13:04:23], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-07-09 13:04:23.664] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-07-09 13:04:23.666] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms 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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-07-09 13:04:23.666] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-07-09 13:04:23.733] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms queue=41.7ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.0", "1.0.1", "1.0.0", ~N[2026-07-09 13:04:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:04:23.736] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms 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` = ?)) 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-07-09 13:04:23.736] [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-07-09 13:04:23.736] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:04:23.737] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:04:23.805] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms queue=40.9ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:04:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:04:23.828] [DEBUG] QUERY OK db=22.6ms queue=0.1ms idle=54.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-09T21:07:31Z", ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:04:23.828] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46784, oid: "organization_id", upload_time: "2026-07-09T21:07:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]} [2026-07-09 13:04:23.828] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T21:07:31Z", "value" => "online"} [2026-07-09 13:04:23.859] [DEBUG] QUERY OK db=30.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T21:07:31Z", "online", "status", 46784, ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:23.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400689, itemkey: "status", value: "online", timestamp: "2026-07-09T21:07:31Z", message: "Terminal status update", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]}} [2026-07-09 13:04:23.859] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-09 13:04:23.860] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T21:07:31Z", "value" => "23"} [2026-07-09 13:04:23.897] [DEBUG] QUERY OK db=36.9ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T21:07:31Z", "23", "battery", 46784, ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:23.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400690, itemkey: "battery", value: "23", timestamp: "2026-07-09T21:07:31Z", message: "Battery level", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]}} [2026-07-09 13:04:23.897] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T21:07:31Z", "value" => "online"} [2026-07-09 13:04:23.922] [DEBUG] QUERY OK db=24.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T21:07:31Z", "online", "network", 46784, ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:23.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400691, itemkey: "network", value: "online", timestamp: "2026-07-09T21:07:31Z", message: "Network connectivity", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]}} [2026-07-09 13:04:23.922] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-09 13:04:23.922] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T21:07:31Z", "value" => "0"} [2026-07-09 13:04:23.970] [DEBUG] QUERY OK db=46.7ms 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-07-09T21:07:31Z", "0", "cpu", 46784, ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:23.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400692, itemkey: "cpu", value: "0", timestamp: "2026-07-09T21:07:31Z", message: "CPU usage percentage", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]}} [2026-07-09 13:04:23.970] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-09T21:07:31Z", "value" => "1.0.0"} [2026-07-09 13:04:24.019] [DEBUG] QUERY OK db=48.8ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-09T21:07:31Z", "1.0.0", "parameter_config", 46784, ~N[2026-07-09 13:04:23], ~N[2026-07-09 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:24.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400693, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-09T21:07:31Z", message: "Current parameters version", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:23], updated_at: ~N[2026-07-09 13:04:23]}} [2026-07-09 13:04:24.019] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-09T21:07:31Z", "value" => "1.0.1"} [2026-07-09 13:04:24.115] [DEBUG] QUERY OK db=95.8ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-09T21:07:31Z", "1.0.1", "emv_config", 46784, ~N[2026-07-09 13:04:24], ~N[2026-07-09 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:24.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400694, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-09T21:07:31Z", message: "Current EMV config version", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:24], updated_at: ~N[2026-07-09 13:04:24]}} [2026-07-09 13:04:24.116] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-09T21:07:31Z", "value" => ""} [2026-07-09 13:04:24.179] [DEBUG] QUERY OK db=61.1ms queue=0.9ms idle=97.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-09T21:07:31Z", "keys_config", 46784, ~N[2026-07-09 13:04:24], ~N[2026-07-09 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:24.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400695, itemkey: "keys_config", value: nil, timestamp: "2026-07-09T21:07:31Z", message: "Current keys config version", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:24], updated_at: ~N[2026-07-09 13:04:24]}} [2026-07-09 13:04:24.179] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-09T21:07:31Z", "value" => ""} [2026-07-09 13:04:24.242] [DEBUG] QUERY OK db=61.3ms queue=0.6ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-07-09T21:07:31Z", "application", 46784, ~N[2026-07-09 13:04:24], ~N[2026-07-09 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:04:24.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400696, itemkey: "application", value: nil, timestamp: "2026-07-09T21:07:31Z", message: "Current application version", status_log_id: 46784, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:04:24], updated_at: ~N[2026-07-09 13:04:24]}} [2026-07-09 13:04:24.242] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-07-09T21:07:32Z"} [2026-07-09 13:04:24.247] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_piyush"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-07-09T21:07:32Z"}} (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, 60, 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_piyush", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{"phoenix_client_piyush" => true}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:04:43.970] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-07-09T21:07:32Z"} [2026-07-09 13:04:48.971] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_piyush"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-07-09T21:07:32Z"}} (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, 61, 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_piyush", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:02.493] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:05:07.494] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T21:08:11Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T21:08:11Z","value":"22"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T21:08:11Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T21:08:11Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-09T21:08:11Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-09T21:08:11Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-09T21:08:11Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-09T21:08:11Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-09T21:08:11Z","vendor":"MoreFun"} [2026-07-09 13:05:12.495] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T21:08:11Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T21:08:11Z", "value" => "22"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T21:08:11Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T21:08:11Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-09T21:08:11Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-09T21:08:11Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-09T21:08:11Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-09T21:08:11Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-07-09T21:08:11Z", "vendor" => "MoreFun"} [2026-07-09 13:05:12.495] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:05:12.495] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:05:12.495] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-09 13:05:12.496] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=590.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-07-09 13:05:12.498] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=585.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-07-09 13:05:12.499] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-07-09 13:05:12.501] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.1ms 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-07-09 13:05:12.502] [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:165 [2026-07-09 13:05:12.543] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:05:12.544] [DEBUG] QUERY OK db=0.7ms queue=0.9ms idle=1632.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 ["490603880000000"] [2026-07-09 13:05:12.545] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-09 13:05:12.546] [DEBUG] QUERY OK source="pos_terminal_data" db=1.1ms 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 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:05:12.547] [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` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:05:12.547] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-09 13:05:12.549] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-09 13:05:12.597] [DEBUG] QUERY OK db=46.8ms 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", "df4627da30b9f3efa7136c2d44f552c4a7600dd09c657cb80696dc36a4740a21", 1507, 914, ~U[2026-07-09 13:05:12Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:05:12.597] [INFO ] AutoPushService: Created push log 33409 for MF919 params.zip [2026-07-09 13:05:12.597] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 1507, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:05:12.597] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-09 13:05:12.597] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-09 13:05:12.599] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=50.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-07-09 13:05:12.602] [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-07-09 13:05:12.650] [DEBUG] QUERY OK db=48.0ms 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`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d336b4aaecc6588fc7b8b9e9b30b93ab37d734162ec8eb162ff987c6bfe1d4c9", 1603, 17947, ~U[2026-07-09 13:05:12Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:05:12.651] [INFO ] AutoPushService: Created push log 33410 for MF919 l3config.zip (version: 1.0.1) [2026-07-09 13:05:12.651] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 1603, "type" => "tms_command", "version" => "1.0.1"} [2026-07-09 13:05:12.651] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-09 13:05:12.651] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-09 13:05:12.652] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=52.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-07-09 13:05:12.652] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-09 13:05:12.655] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:05:12.655] [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-07-09 13:05:12.656] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:05:12.656] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:05:12.656] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:05:12.657] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-07-09 13:05:12.658] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-09 13:05:12.658] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-09 13:05:12.660] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:05:12.660] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:05:12.725] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms queue=41.1ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:05:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:05:12.726] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=65.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-07-09 13:05:12.727] [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-07-09 13:05:12.727] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:05:12.728] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:05:12.778] [DEBUG] QUERY OK source="tms_terminals" db=50.3ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:05:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:05:12.825] [DEBUG] QUERY OK db=46.4ms idle=51.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-09T21:08:11Z", ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:05:12.825] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46785, oid: "organization_id", upload_time: "2026-07-09T21:08:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]} [2026-07-09 13:05:12.826] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T21:08:11Z", "value" => "online"} [2026-07-09 13:05:12.858] [DEBUG] QUERY OK db=31.7ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T21:08:11Z", "online", "status", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:12.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400697, itemkey: "status", value: "online", timestamp: "2026-07-09T21:08:11Z", message: "Terminal status update", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:12.858] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-09 13:05:12.858] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T21:08:11Z", "value" => "22"} [2026-07-09 13:05:12.891] [DEBUG] QUERY OK db=32.5ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T21:08:11Z", "22", "battery", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:12.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400698, itemkey: "battery", value: "22", timestamp: "2026-07-09T21:08:11Z", message: "Battery level", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:12.891] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T21:08:11Z", "value" => "online"} [2026-07-09 13:05:12.921] [DEBUG] QUERY OK db=29.2ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T21:08:11Z", "online", "network", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:12.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400699, itemkey: "network", value: "online", timestamp: "2026-07-09T21:08:11Z", message: "Network connectivity", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:12.921] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-09 13:05:12.922] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T21:08:11Z", "value" => "0"} [2026-07-09 13:05:12.949] [DEBUG] QUERY OK db=26.9ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-09T21:08:11Z", "0", "cpu", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:12.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400700, itemkey: "cpu", value: "0", timestamp: "2026-07-09T21:08:11Z", message: "CPU usage percentage", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:12.949] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-09T21:08:11Z", "value" => "1.0.0"} [2026-07-09 13:05:12.989] [DEBUG] QUERY OK db=39.6ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-09T21:08:11Z", "1.0.0", "parameter_config", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:12.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400701, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-09T21:08:11Z", message: "Current parameters version", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:12.990] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-09T21:08:11Z", "value" => "1.0.1"} [2026-07-09 13:05:13.046] [DEBUG] QUERY OK db=56.0ms queue=0.1ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-09T21:08:11Z", "1.0.1", "emv_config", 46785, ~N[2026-07-09 13:05:12], ~N[2026-07-09 13:05:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400702, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-09T21:08:11Z", message: "Current EMV config version", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:12], updated_at: ~N[2026-07-09 13:05:12]}} [2026-07-09 13:05:13.047] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-09T21:08:11Z", "value" => ""} [2026-07-09 13:05:13.103] [DEBUG] QUERY OK db=55.8ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-09T21:08:11Z", "keys_config", 46785, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400703, itemkey: "keys_config", value: nil, timestamp: "2026-07-09T21:08:11Z", message: "Current keys config version", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.103] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-09T21:08:11Z", "value" => ""} [2026-07-09 13:05:13.126] [DEBUG] QUERY OK db=21.8ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-07-09T21:08:11Z", "application", 46785, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400704, itemkey: "application", value: nil, timestamp: "2026-07-09T21:08:11Z", message: "Current application version", status_log_id: 46785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.126] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:05:13.126] [INFO ] Incoming JSON payload: {"oid":"a03cf77a-2cf2-4f05-bc48-c4c9cf740798","sn":"98251226730001","uploadTime":"2026-07-09T21:07:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"ram_free_mb","value":"908","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:07:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:05:13.127] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a03cf77a-2cf2-4f05-bc48-c4c9cf740798", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:07:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:07:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:07:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:07:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "908"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:07:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:07:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:07:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:07:58Z", "vendor" => "morefun"} [2026-07-09 13:05:13.127] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:05:13.127] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:05:13.127] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:05:13.129] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:05:13.131] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=3.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:05:13.131] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:05:13.132] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:05:13.205] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms queue=40.9ms idle=2.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-07-09 13:05:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-07-09 13:05:13.206] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:05:13.206] [DEBUG] Processing terminal event: terminal_updated [2026-07-09 13:05:13.206] [INFO ] Processing terminal_updated event for terminal 33 [2026-07-09 13:05:13.206] [INFO ] Changed fields: [:vendor, :model] [2026-07-09 13:05:13.206] [INFO ] Event published: terminal_updated [2026-07-09 13:05:13.207] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=74.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-07-09 13:05:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-07-09 13:05:13.208] [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` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-07-09 13:05:13.208] [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-07-09 13:05:13.208] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-07-09 13:05:13.283] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms queue=41.5ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, ~N[2026-07-09 13:05:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:05:13.283] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:05:13.284] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=74.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:697 [2026-07-09 13:05:13.349] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=41.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:05:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:05:13.409] [DEBUG] QUERY OK db=59.1ms idle=66.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a03cf77a-2cf2-4f05-bc48-c4c9cf740798", "2026-07-09T21:07:58Z", ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:05:13.410] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46786, oid: "a03cf77a-2cf2-4f05-bc48-c4c9cf740798", upload_time: "2026-07-09T21:07:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]} [2026-07-09 13:05:13.410] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:07:58Z", "value" => "morefun"} [2026-07-09 13:05:13.489] [DEBUG] QUERY OK db=36.8ms queue=41.5ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "morefun", "vendor", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400705, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.491] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:07:58Z", "value" => "kiosk_launcher"} [2026-07-09 13:05:13.521] [DEBUG] QUERY OK db=29.2ms queue=0.5ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "kiosk_launcher", "model", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400706, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.521] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:07:58Z", "value" => "1.0"} [2026-07-09 13:05:13.547] [DEBUG] QUERY OK db=24.8ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "1.0", "app_version", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400707, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.548] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:07:58Z", "value" => "13"} [2026-07-09 13:05:13.608] [DEBUG] QUERY OK db=59.9ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "13", "android_version", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400708, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.608] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "908"} [2026-07-09 13:05:13.632] [DEBUG] QUERY OK db=22.7ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "908", "ram_free_mb", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400709, itemkey: "ram_free_mb", value: "908", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.632] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:07:58Z", "value" => "WIFI"} [2026-07-09 13:05:13.665] [DEBUG] QUERY OK db=32.4ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "WIFI", "network_type", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400710, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.665] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:07:58Z", "value" => "true"} [2026-07-09 13:05:13.699] [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-07-09T21:07:58Z", "true", "kiosk_active", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400711, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.700] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:07:58Z", "value" => ""} [2026-07-09 13:05:13.741] [DEBUG] QUERY OK db=40.8ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:07:58Z", "sim_operator", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400712, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.742] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"} [2026-07-09 13:05:13.780] [DEBUG] QUERY OK db=35.4ms queue=1.5ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "UNKNOWN", "sim_number", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400713, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.780] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"} [2026-07-09 13:05:13.809] [DEBUG] QUERY OK db=27.8ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "UNKNOWN", "sim_iccid", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400714, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.809] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"} [2026-07-09 13:05:13.859] [DEBUG] QUERY OK db=49.3ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "UNKNOWN", "sim_imsi", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400715, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.861] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"} [2026-07-09 13:05:13.912] [DEBUG] QUERY OK db=50.9ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "UNKNOWN", "sim_iccid2", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400716, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.912] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:07:58Z", "value" => "UNKNOWN"} [2026-07-09 13:05:13.949] [DEBUG] QUERY OK db=36.7ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "UNKNOWN", "sim_imsi2", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400717, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.950] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "11"} [2026-07-09 13:05:13.989] [DEBUG] QUERY OK db=38.8ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "11", "data_usage_mb", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:13.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400718, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:13.989] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:07:58Z", "value" => "0"} [2026-07-09 13:05:14.042] [DEBUG] QUERY OK db=52.0ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07:58Z", "0", "mobile_data_mb", 46786, ~N[2026-07-09 13:05:13], ~N[2026-07-09 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400719, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:13], updated_at: ~N[2026-07-09 13:05:13]}} [2026-07-09 13:05:14.044] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:05:14.106] [DEBUG] QUERY OK db=59.1ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:07: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46786, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400720, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:07:58Z", message: nil, status_log_id: 46786, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.107] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:05:14.107] [INFO ] Incoming JSON payload: {"oid":"5df705d2-8744-49c7-b5fd-47268aecf153","sn":"98250904730001","uploadTime":"2026-07-09T13:04:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-07-09T13:04:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:05:14.108] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5df705d2-8744-49c7-b5fd-47268aecf153", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:04:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:04:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:04:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:04:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:04:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:04:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:04:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:04:49Z", "vendor" => "morefun"} [2026-07-09 13:05:14.108] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:05:14.109] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:05:14.109] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:05:14.110] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=67.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-07-09 13:05:14.111] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=6.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-07-09 13:05:14.111] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:05:14.114] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:05:14.114] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:05:14.197] [DEBUG] QUERY OK source="tms_terminals" db=41.8ms queue=40.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:05:14], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:05:14.198] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:05:14.200] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=85.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:05:14.229] [DEBUG] QUERY OK source="tms_terminals" db=28.1ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:05:14], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:05:14.282] [DEBUG] QUERY OK db=53.1ms idle=28.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "5df705d2-8744-49c7-b5fd-47268aecf153", "2026-07-09T13:04:49Z", ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:05:14.282] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46787, oid: "5df705d2-8744-49c7-b5fd-47268aecf153", upload_time: "2026-07-09T13:04:49Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]} [2026-07-09 13:05:14.282] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:04:49Z", "value" => "morefun"} [2026-07-09 13:05:14.312] [DEBUG] QUERY OK db=29.5ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "morefun", "vendor", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400721, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.313] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:04:49Z", "value" => "kiosk_launcher"} [2026-07-09 13:05:14.333] [DEBUG] QUERY OK db=19.9ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "kiosk_launcher", "model", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400722, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.333] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:04:49Z", "value" => "1.0"} [2026-07-09 13:05:14.369] [DEBUG] QUERY OK db=35.5ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "1.0", "app_version", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400723, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.370] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:04:49Z", "value" => "13"} [2026-07-09 13:05:14.414] [DEBUG] QUERY OK db=43.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "13", "android_version", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400724, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.416] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "1081"} [2026-07-09 13:05:14.470] [DEBUG] QUERY OK db=51.7ms queue=0.8ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "1081", "ram_free_mb", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400725, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.471] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:04:49Z", "value" => "WIFI"} [2026-07-09 13:05:14.495] [DEBUG] QUERY OK db=23.8ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "WIFI", "network_type", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400726, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.495] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:04:49Z", "value" => "true"} [2026-07-09 13:05:14.543] [DEBUG] QUERY OK db=46.8ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "true", "kiosk_active", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400727, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.543] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:04:49Z", "value" => ""} [2026-07-09 13:05:14.577] [DEBUG] QUERY OK db=34.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:04:49Z", "sim_operator", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400728, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.578] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"} [2026-07-09 13:05:14.631] [DEBUG] QUERY OK db=52.9ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "UNKNOWN", "sim_number", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400729, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.632] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"} [2026-07-09 13:05:14.674] [DEBUG] QUERY OK db=42.5ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "UNKNOWN", "sim_iccid", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400730, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.675] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"} [2026-07-09 13:05:14.719] [DEBUG] QUERY OK db=43.8ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "UNKNOWN", "sim_imsi", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400731, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.719] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"} [2026-07-09 13:05:14.769] [DEBUG] QUERY OK db=47.3ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "UNKNOWN", "sim_iccid2", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400732, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.770] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:04:49Z", "value" => "UNKNOWN"} [2026-07-09 13:05:14.833] [DEBUG] QUERY OK db=62.9ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "UNKNOWN", "sim_imsi2", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400733, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.834] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "27"} [2026-07-09 13:05:14.881] [DEBUG] QUERY OK db=46.9ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "27", "data_usage_mb", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:14.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400734, itemkey: "data_usage_mb", value: "27", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:14.881] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:04:49Z", "value" => "0"} [2026-07-09 13:05:14.921] [DEBUG] QUERY OK db=39.4ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:04:49Z", "0", "mobile_data_mb", 46787, ~N[2026-07-09 13:05:14], ~N[2026-07-09 13:05:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:05:19.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400735, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:04:49Z", message: nil, status_log_id: 46787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:05:14], updated_at: ~N[2026-07-09 13:05:14]}} [2026-07-09 13:05:21.861] [INFO ] Performing scheduled filter cache refresh... [2026-07-09 13:05:22.101] [INFO ] Running offline device check... [2026-07-09 13:05:24.924] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:05:26.864] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=957.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-07-09 13:05:27.015] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_piyush", 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_piyush", 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.1036838730.422576129.85956>, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:27.102] [INFO ] Starting offline device check... [2026-07-09 13:05:31.867] [DEBUG] QUERY OK source="filter_usage" db=1.2ms idle=1900.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-07-09 13:05:32.027] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}} terminating ** (stop) :ping_timeout Last message: {:EXIT, #PID<0.1405.0>, :ping_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2025.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1425.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1426.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576459874], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]} [2026-07-09 13:05:32.047] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_piyush"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.44>}, :infinity) ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started (stdlib 5.2.3.2) gen.erl:597: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.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: :connect State: %Tortoise.Connection{client_id: "phoenix_client_piyush", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: true, keep_alive: 60, client_id: "phoenix_client_piyush", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, 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: nil, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:32.105] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=237.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:747 [2026-07-09 13:05:36.867] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-09 13:05:37.058] [INFO ] Device phoenix_client_piyush connected [2026-07-09 13:05:37.114] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=1125.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:05:42.060] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_piyush", 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_piyush", 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.1036838730.422051842.83742>, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:42.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.1ms idle=209.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:05:47.063] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2030.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2034.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2032.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2033.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]} [2026-07-09 13:05:47.068] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_piyush"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.46>}, :infinity) ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started (stdlib 5.2.3.2) gen.erl:597: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.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: :connect State: %Tortoise.Connection{client_id: "phoenix_client_piyush", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: true, keep_alive: 60, client_id: "phoenix_client_piyush", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, 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: nil, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:47.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=1118.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:05:52.075] [INFO ] Device phoenix_client_piyush connected [2026-07-09 13:05:52.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=271.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:05:57.075] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_piyush"}} 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_piyush", online_devices: %{"phoenix_client_piyush" => true}}) (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_piyush"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_piyush", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{"phoenix_client_piyush" => true}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:57.075] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_piyush", 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_piyush", 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.1036838730.422051842.83947>, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:05:57.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1096.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:02.078] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2036.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2041.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2038.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2039.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576459806], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]} [2026-07-09 13:06:02.087] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_piyush"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.48>}, :infinity) ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started (stdlib 5.2.3.2) gen.erl:597: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.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: :connect State: %Tortoise.Connection{client_id: "phoenix_client_piyush", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: true, keep_alive: 60, client_id: "phoenix_client_piyush", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, 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: nil, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:06:02.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms idle=1083.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:07.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1025.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:07.117] [INFO ] Device phoenix_client_piyush connected [2026-07-09 13:06:09.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.2ms queue=0.1ms idle=994.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:09.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=791.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:10.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=67.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=68.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:06:10.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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:762 [2026-07-09 13:06:10.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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:762 [2026-07-09 13:06:10.061] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=20.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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:762 [2026-07-09 13:06:10.082] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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:762 [2026-07-09 13:06:10.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.094] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:762 [2026-07-09 13:06:10.096] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.102] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.103] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.104] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.105] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.108] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.109] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.110] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.111] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:06:10.111] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 13:06:10.111] [INFO ] Offline device check completed successfully [2026-07-09 13:06:20.216] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:06:20.216] [INFO ] Incoming JSON payload: {"oid":"30d70eba-9e50-4280-bb16-a5cb739003ed","sn":"98251226730001","uploadTime":"2026-07-09T21:09:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"ram_free_mb","value":"899","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:09:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:06:20.217] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "30d70eba-9e50-4280-bb16-a5cb739003ed", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:09:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:09:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:09:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:09:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "899"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:09:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:09:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:09:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:09:28Z", "vendor" => "morefun"} [2026-07-09 13:06:20.217] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:06:20.217] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:06:20.218] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:06:20.218] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=479.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-07-09 13:06:20.219] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=25.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-07-09 13:06:20.219] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:06:20.220] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:06:20.220] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:06:20.264] [DEBUG] QUERY OK source="tms_terminals" db=43.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:06:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:06:20.265] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:06:20.266] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:06:20.318] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:06:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:06:20.347] [DEBUG] QUERY OK db=28.2ms idle=52.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "30d70eba-9e50-4280-bb16-a5cb739003ed", "2026-07-09T21:09:28Z", ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:06:20.347] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46788, oid: "30d70eba-9e50-4280-bb16-a5cb739003ed", upload_time: "2026-07-09T21:09:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]} [2026-07-09 13:06:20.347] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:09:28Z", "value" => "morefun"} [2026-07-09 13:06:20.389] [DEBUG] QUERY OK db=41.6ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "morefun", "vendor", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400737, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.389] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:09:28Z", "value" => "kiosk_launcher"} [2026-07-09 13:06:20.422] [DEBUG] QUERY OK db=30.9ms queue=0.6ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "kiosk_launcher", "model", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400738, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.422] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:09:28Z", "value" => "1.0"} [2026-07-09 13:06:20.470] [DEBUG] QUERY OK db=47.1ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "1.0", "app_version", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400739, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.470] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:09:28Z", "value" => "13"} [2026-07-09 13:06:20.501] [DEBUG] QUERY OK db=30.3ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "13", "android_version", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400740, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.501] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "899"} [2026-07-09 13:06:20.539] [DEBUG] QUERY OK db=37.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "899", "ram_free_mb", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400741, itemkey: "ram_free_mb", value: "899", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.539] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:09:28Z", "value" => "WIFI"} [2026-07-09 13:06:20.566] [DEBUG] QUERY OK db=26.3ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "WIFI", "network_type", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400742, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.566] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:09:28Z", "value" => "true"} [2026-07-09 13:06:20.590] [DEBUG] QUERY OK db=23.6ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "true", "kiosk_active", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400743, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.591] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:09:28Z", "value" => ""} [2026-07-09 13:06:20.654] [DEBUG] QUERY OK db=63.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:09:28Z", "sim_operator", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400744, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.654] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"} [2026-07-09 13:06:20.698] [DEBUG] QUERY OK db=42.8ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "UNKNOWN", "sim_number", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400745, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.698] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"} [2026-07-09 13:06:20.709] [DEBUG] QUERY OK db=10.9ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "UNKNOWN", "sim_iccid", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400746, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.710] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"} [2026-07-09 13:06:20.748] [DEBUG] QUERY OK db=37.8ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "UNKNOWN", "sim_imsi", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400747, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.748] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"} [2026-07-09 13:06:20.797] [DEBUG] QUERY OK db=48.8ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "UNKNOWN", "sim_iccid2", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400748, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.798] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:09:28Z", "value" => "UNKNOWN"} [2026-07-09 13:06:20.846] [DEBUG] QUERY OK db=47.7ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "UNKNOWN", "sim_imsi2", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400749, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.847] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "11"} [2026-07-09 13:06:20.903] [DEBUG] QUERY OK db=56.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "11", "data_usage_mb", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400750, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.904] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:09:28Z", "value" => "0"} [2026-07-09 13:06:20.930] [DEBUG] QUERY OK db=24.4ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:28Z", "0", "mobile_data_mb", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400751, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.932] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:06:20.965] [DEBUG] QUERY OK db=31.6ms queue=0.2ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46788, ~N[2026-07-09 13:06:20], ~N[2026-07-09 13:06:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:20.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400752, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:09:28Z", message: nil, status_log_id: 46788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:20], updated_at: ~N[2026-07-09 13:06:20]}} [2026-07-09 13:06:20.966] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:06:20.966] [INFO ] Incoming JSON payload: {"oid":"73cc74d5-e972-4748-906c-50b31c4645fb","sn":"98250904730001","uploadTime":"2026-07-09T13:06:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:06:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:06:20.968] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "73cc74d5-e972-4748-906c-50b31c4645fb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:06:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:06:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:06:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:06:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:06:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:06:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:06:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:06:20Z", "vendor" => "morefun"} [2026-07-09 13:06:20.969] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:06:20.970] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:06:20.970] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:06:20.971] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=39.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-07-09 13:06:20.972] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=7.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-07-09 13:06:20.972] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:06:20.974] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:06:20.974] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:06:21.033] [DEBUG] QUERY OK source="tms_terminals" db=58.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:06:20], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:06:21.033] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:06:21.035] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:06:21.087] [DEBUG] QUERY OK source="tms_terminals" db=51.7ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:06:21], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:06:21.126] [DEBUG] QUERY OK db=36.9ms idle=54.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "73cc74d5-e972-4748-906c-50b31c4645fb", "2026-07-09T13:06:20Z", ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:06:21.126] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46789, oid: "73cc74d5-e972-4748-906c-50b31c4645fb", upload_time: "2026-07-09T13:06:20Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]} [2026-07-09 13:06:21.126] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:06:20Z", "value" => "morefun"} [2026-07-09 13:06:21.160] [DEBUG] QUERY OK db=32.6ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "morefun", "vendor", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400753, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.161] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:06:20Z", "value" => "kiosk_launcher"} [2026-07-09 13:06:21.204] [DEBUG] QUERY OK db=42.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "kiosk_launcher", "model", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400754, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.205] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:06:20Z", "value" => "1.0"} [2026-07-09 13:06:21.237] [DEBUG] QUERY OK db=32.4ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "1.0", "app_version", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400755, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.238] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:06:20Z", "value" => "13"} [2026-07-09 13:06:21.273] [DEBUG] QUERY OK db=35.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "13", "android_version", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400756, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.274] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "1079"} [2026-07-09 13:06:21.293] [DEBUG] QUERY OK db=18.8ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "1079", "ram_free_mb", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400757, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.293] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:06:20Z", "value" => "WIFI"} [2026-07-09 13:06:21.321] [DEBUG] QUERY OK db=27.7ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "WIFI", "network_type", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400758, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.321] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:06:20Z", "value" => "true"} [2026-07-09 13:06:21.366] [DEBUG] QUERY OK db=43.7ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "true", "kiosk_active", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400759, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.367] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:06:20Z", "value" => ""} [2026-07-09 13:06:21.439] [DEBUG] QUERY OK db=71.0ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:06:20Z", "sim_operator", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400760, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.439] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"} [2026-07-09 13:06:21.469] [DEBUG] QUERY OK db=29.2ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "UNKNOWN", "sim_number", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400761, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.469] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"} [2026-07-09 13:06:21.489] [DEBUG] QUERY OK db=17.6ms queue=1.4ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "UNKNOWN", "sim_iccid", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400762, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.490] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"} [2026-07-09 13:06:21.540] [DEBUG] QUERY OK db=50.4ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "UNKNOWN", "sim_imsi", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400763, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.541] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"} [2026-07-09 13:06:21.574] [DEBUG] QUERY OK db=32.3ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "UNKNOWN", "sim_iccid2", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400764, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.574] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:06:20Z", "value" => "UNKNOWN"} [2026-07-09 13:06:21.615] [DEBUG] QUERY OK db=40.7ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "UNKNOWN", "sim_imsi2", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400765, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.616] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "28"} [2026-07-09 13:06:21.627] [DEBUG] QUERY OK db=11.1ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "28", "data_usage_mb", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400766, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.628] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:06:20Z", "value" => "0"} [2026-07-09 13:06:21.667] [DEBUG] QUERY OK db=38.5ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:20Z", "0", "mobile_data_mb", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400767, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:21.668] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:06:21.717] [DEBUG] QUERY OK db=48.2ms queue=0.1ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46789, ~N[2026-07-09 13:06:21], ~N[2026-07-09 13:06:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:21.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400768, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:06:20Z", message: nil, status_log_id: 46789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:21], updated_at: ~N[2026-07-09 13:06:21]}} [2026-07-09 13:06:50.312] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:06:50.312] [INFO ] Incoming JSON payload: {"oid":"7b9b2af2-b657-412e-91aa-b3982b745dfc","sn":"98251226730001","uploadTime":"2026-07-09T21:09:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"ram_free_mb","value":"906","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:09:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:06:50.316] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7b9b2af2-b657-412e-91aa-b3982b745dfc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:09:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:09:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:09:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:09:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "906"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:09:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:09:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:09:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:09:58Z", "vendor" => "morefun"} [2026-07-09 13:06:50.316] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:06:50.316] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:06:50.316] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:06:50.319] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=1043.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-07-09 13:06:50.320] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=43.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-07-09 13:06:50.320] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:06:50.321] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:06:50.321] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:06:50.341] [DEBUG] QUERY OK source="tms_terminals" db=19.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:06:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:06:50.341] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:06:50.342] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=20.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:697 [2026-07-09 13:06:50.396] [DEBUG] QUERY OK source="tms_terminals" db=53.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:06:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:06:50.442] [DEBUG] QUERY OK db=44.3ms idle=54.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7b9b2af2-b657-412e-91aa-b3982b745dfc", "2026-07-09T21:09:58Z", ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:06:50.442] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46790, oid: "7b9b2af2-b657-412e-91aa-b3982b745dfc", upload_time: "2026-07-09T21:09:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]} [2026-07-09 13:06:50.442] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:09:58Z", "value" => "morefun"} [2026-07-09 13:06:50.487] [DEBUG] QUERY OK db=43.2ms queue=0.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "morefun", "vendor", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400769, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.488] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:09:58Z", "value" => "kiosk_launcher"} [2026-07-09 13:06:50.515] [DEBUG] QUERY OK db=27.5ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "kiosk_launcher", "model", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400770, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.516] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:09:58Z", "value" => "1.0"} [2026-07-09 13:06:50.537] [DEBUG] QUERY OK db=20.3ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "1.0", "app_version", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400771, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.537] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:09:58Z", "value" => "13"} [2026-07-09 13:06:50.565] [DEBUG] QUERY OK db=27.4ms queue=0.1ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "13", "android_version", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400772, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.565] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "906"} [2026-07-09 13:06:50.618] [DEBUG] QUERY OK db=50.5ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "906", "ram_free_mb", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400773, itemkey: "ram_free_mb", value: "906", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.619] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:09:58Z", "value" => "WIFI"} [2026-07-09 13:06:50.660] [DEBUG] QUERY OK db=41.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "WIFI", "network_type", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400774, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.660] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:09:58Z", "value" => "true"} [2026-07-09 13:06:50.700] [DEBUG] QUERY OK db=39.5ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "true", "kiosk_active", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400775, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.701] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:09:58Z", "value" => ""} [2026-07-09 13:06:50.730] [DEBUG] QUERY OK db=29.0ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:09:58Z", "sim_operator", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400776, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.730] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"} [2026-07-09 13:06:50.755] [DEBUG] QUERY OK db=23.7ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "UNKNOWN", "sim_number", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400777, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.756] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"} [2026-07-09 13:06:50.825] [DEBUG] QUERY OK db=68.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "UNKNOWN", "sim_iccid", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400778, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.826] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"} [2026-07-09 13:06:50.892] [DEBUG] QUERY OK db=65.9ms queue=0.3ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "UNKNOWN", "sim_imsi", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400779, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.893] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"} [2026-07-09 13:06:50.971] [DEBUG] QUERY OK db=77.5ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "UNKNOWN", "sim_iccid2", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400780, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.971] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:09:58Z", "value" => "UNKNOWN"} [2026-07-09 13:06:50.998] [DEBUG] QUERY OK db=26.4ms idle=79.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "UNKNOWN", "sim_imsi2", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:50.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400781, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:50.999] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "11"} [2026-07-09 13:06:51.050] [DEBUG] QUERY OK db=49.8ms queue=0.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "11", "data_usage_mb", 46790, ~N[2026-07-09 13:06:50], ~N[2026-07-09 13:06:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400782, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:50], updated_at: ~N[2026-07-09 13:06:50]}} [2026-07-09 13:06:51.050] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:09:58Z", "value" => "0"} [2026-07-09 13:06:51.071] [DEBUG] QUERY OK db=20.3ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09:58Z", "0", "mobile_data_mb", 46790, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400783, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.073] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:06:51.135] [DEBUG] QUERY OK db=60.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:09: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46790, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400784, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:09:58Z", message: nil, status_log_id: 46790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.137] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:06:51.137] [INFO ] Incoming JSON payload: {"oid":"2e108409-0b8e-4a77-9953-7ee186933d25","sn":"98250904730001","uploadTime":"2026-07-09T13:06:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"ram_free_mb","value":"1090","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:06:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:06:51.138] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2e108409-0b8e-4a77-9953-7ee186933d25", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:06:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:06:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:06:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:06:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "1090"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:06:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:06:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:06:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:06:50Z", "vendor" => "morefun"} [2026-07-09 13:06:51.138] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:06:51.138] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:06:51.138] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:06:51.140] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.4ms idle=67.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:06:51.140] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.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-07-09 13:06:51.140] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:06:51.141] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:06:51.142] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:06:51.185] [DEBUG] QUERY OK source="tms_terminals" db=42.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:06:51], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:06:51.185] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:06:51.186] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=44.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:06:51.219] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:06:51], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:06:51.242] [DEBUG] QUERY OK db=23.1ms idle=32.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "2e108409-0b8e-4a77-9953-7ee186933d25", "2026-07-09T13:06:50Z", ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:06:51.242] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46791, oid: "2e108409-0b8e-4a77-9953-7ee186933d25", upload_time: "2026-07-09T13:06:50Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]} [2026-07-09 13:06:51.242] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:06:50Z", "value" => "morefun"} [2026-07-09 13:06:51.271] [DEBUG] QUERY OK db=28.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "morefun", "vendor", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400785, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.272] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:06:50Z", "value" => "kiosk_launcher"} [2026-07-09 13:06:51.328] [DEBUG] QUERY OK db=55.4ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "kiosk_launcher", "model", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400786, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.328] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:06:50Z", "value" => "1.0"} [2026-07-09 13:06:51.352] [DEBUG] QUERY OK db=23.6ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "1.0", "app_version", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400787, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.353] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:06:50Z", "value" => "13"} [2026-07-09 13:06:51.392] [DEBUG] QUERY OK db=39.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "13", "android_version", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400788, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.393] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "1090"} [2026-07-09 13:06:51.451] [DEBUG] QUERY OK db=57.3ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "1090", "ram_free_mb", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400789, itemkey: "ram_free_mb", value: "1090", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.451] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:06:50Z", "value" => "WIFI"} [2026-07-09 13:06:51.475] [DEBUG] QUERY OK db=23.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "WIFI", "network_type", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400790, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.475] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:06:50Z", "value" => "true"} [2026-07-09 13:06:51.510] [DEBUG] QUERY OK db=34.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "true", "kiosk_active", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400791, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.510] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:06:50Z", "value" => ""} [2026-07-09 13:06:51.546] [DEBUG] QUERY OK db=34.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:06:50Z", "sim_operator", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400792, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.546] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"} [2026-07-09 13:06:51.572] [DEBUG] QUERY OK db=25.7ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "UNKNOWN", "sim_number", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400793, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.572] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"} [2026-07-09 13:06:51.608] [DEBUG] QUERY OK db=35.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "UNKNOWN", "sim_iccid", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400794, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.608] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"} [2026-07-09 13:06:51.641] [DEBUG] QUERY OK db=32.4ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "UNKNOWN", "sim_imsi", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400795, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.642] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"} [2026-07-09 13:06:51.664] [DEBUG] QUERY OK db=22.2ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "UNKNOWN", "sim_iccid2", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400796, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.665] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:06:50Z", "value" => "UNKNOWN"} [2026-07-09 13:06:51.701] [DEBUG] QUERY OK db=36.5ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "UNKNOWN", "sim_imsi2", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400797, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.702] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "28"} [2026-07-09 13:06:51.737] [DEBUG] QUERY OK db=34.3ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "28", "data_usage_mb", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400798, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.737] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:06:50Z", "value" => "0"} [2026-07-09 13:06:51.772] [DEBUG] QUERY OK db=35.0ms queue=0.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06:50Z", "0", "mobile_data_mb", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400799, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:06:51.773] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:06:51.853] [DEBUG] QUERY OK db=77.9ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:06: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46791, ~N[2026-07-09 13:06:51], ~N[2026-07-09 13:06:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:06:51.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400800, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:06:50Z", message: nil, status_log_id: 46791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:06:51], updated_at: ~N[2026-07-09 13:06:51]}} [2026-07-09 13:07:20.385] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:07:20.386] [INFO ] Incoming JSON payload: {"oid":"befccbd2-ebc3-48d8-be47-bcb88b1d15f9","sn":"98251226730001","uploadTime":"2026-07-09T21:10:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"ram_free_mb","value":"898","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:10:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:07:20.387] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "befccbd2-ebc3-48d8-be47-bcb88b1d15f9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:10:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:10:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:10:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:10:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "898"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:10:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:10:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:10:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:10:28Z", "vendor" => "morefun"} [2026-07-09 13:07:20.387] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:07:20.387] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:07:20.387] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:07:20.388] [DEBUG] QUERY OK source="parameter_templates" db=0.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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:07:20.390] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:07:20.390] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:07:20.392] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.1ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:07:20.392] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:07:20.449] [DEBUG] QUERY OK source="tms_terminals" db=56.3ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:07:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:07:20.449] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:07:20.450] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=57.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:697 [2026-07-09 13:07:20.489] [DEBUG] QUERY OK source="tms_terminals" db=38.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:07:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:07:20.535] [DEBUG] QUERY OK db=43.0ms queue=2.3ms idle=39.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "befccbd2-ebc3-48d8-be47-bcb88b1d15f9", "2026-07-09T21:10:28Z", ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:07:20.536] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46792, oid: "befccbd2-ebc3-48d8-be47-bcb88b1d15f9", upload_time: "2026-07-09T21:10:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]} [2026-07-09 13:07:20.536] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:10:28Z", "value" => "morefun"} [2026-07-09 13:07:20.563] [DEBUG] QUERY OK db=27.1ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "morefun", "vendor", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400801, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.564] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:10:28Z", "value" => "kiosk_launcher"} [2026-07-09 13:07:20.616] [DEBUG] QUERY OK db=49.8ms queue=0.1ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "kiosk_launcher", "model", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400802, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.616] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:10:28Z", "value" => "1.0"} [2026-07-09 13:07:20.656] [DEBUG] QUERY OK db=39.1ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "1.0", "app_version", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400803, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.656] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:10:28Z", "value" => "13"} [2026-07-09 13:07:20.701] [DEBUG] QUERY OK db=43.7ms queue=0.3ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "13", "android_version", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400804, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.701] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "898"} [2026-07-09 13:07:20.732] [DEBUG] QUERY OK db=30.2ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "898", "ram_free_mb", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400805, itemkey: "ram_free_mb", value: "898", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.732] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:10:28Z", "value" => "WIFI"} [2026-07-09 13:07:20.776] [DEBUG] QUERY OK db=43.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "WIFI", "network_type", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400806, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.776] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:10:28Z", "value" => "true"} [2026-07-09 13:07:20.864] [DEBUG] QUERY OK db=85.1ms queue=0.1ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "true", "kiosk_active", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400807, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.864] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:10:28Z", "value" => ""} [2026-07-09 13:07:20.934] [DEBUG] QUERY OK db=69.0ms idle=88.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:10:28Z", "sim_operator", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400808, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.934] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"} [2026-07-09 13:07:20.984] [DEBUG] QUERY OK db=49.5ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "UNKNOWN", "sim_number", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:20.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400809, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:20.985] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.034] [DEBUG] QUERY OK db=48.7ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "UNKNOWN", "sim_iccid", 46792, ~N[2026-07-09 13:07:20], ~N[2026-07-09 13:07:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400810, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:20], updated_at: ~N[2026-07-09 13:07:20]}} [2026-07-09 13:07:21.034] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.056] [DEBUG] QUERY OK db=19.4ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "UNKNOWN", "sim_imsi", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400811, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.109] [DEBUG] QUERY OK db=52.4ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "UNKNOWN", "sim_iccid2", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.110] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:10:28Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.129] [DEBUG] QUERY OK db=19.5ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "UNKNOWN", "sim_imsi2", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400813, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.131] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "11"} [2026-07-09 13:07:21.166] [DEBUG] QUERY OK db=34.4ms queue=0.1ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "11", "data_usage_mb", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400814, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.166] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:10:28Z", "value" => "0"} [2026-07-09 13:07:21.297] [DEBUG] QUERY OK db=130.4ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:28Z", "0", "mobile_data_mb", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400815, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.299] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:07:21.330] [DEBUG] QUERY OK db=29.2ms idle=134.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46792, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400816, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:10:28Z", message: nil, status_log_id: 46792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.332] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:07:21.333] [INFO ] Incoming JSON payload: {"oid":"e4270310-dfc7-4588-81d2-cfcf50f627ab","sn":"98250904730001","uploadTime":"2026-07-09T13:07:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"ram_free_mb","value":"1088","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:07:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:07: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:07:21.335] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e4270310-dfc7-4588-81d2-cfcf50f627ab", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:07:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:07:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:07:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:07:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "1088"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:07:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:07:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:07:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:07: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:07:20Z", "vendor" => "morefun"} [2026-07-09 13:07:21.335] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:07:21.335] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:07:21.335] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:07:21.337] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=38.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-07-09 13:07:21.338] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=8.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-07-09 13:07:21.338] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:07:21.339] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:07:21.339] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:07:21.364] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:07:21], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:07:21.364] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:07:21.367] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:07:21.404] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:07:21], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:07:21.418] [DEBUG] QUERY OK db=13.6ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "e4270310-dfc7-4588-81d2-cfcf50f627ab", "2026-07-09T13:07:20Z", ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:07:21.419] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46793, oid: "e4270310-dfc7-4588-81d2-cfcf50f627ab", upload_time: "2026-07-09T13:07:20Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]} [2026-07-09 13:07:21.419] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:07:20Z", "value" => "morefun"} [2026-07-09 13:07:21.436] [DEBUG] QUERY OK db=16.7ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "morefun", "vendor", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400817, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.437] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:07:20Z", "value" => "kiosk_launcher"} [2026-07-09 13:07:21.458] [DEBUG] QUERY OK db=20.1ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "kiosk_launcher", "model", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400818, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.458] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:07:20Z", "value" => "1.0"} [2026-07-09 13:07:21.500] [DEBUG] QUERY OK db=40.6ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "1.0", "app_version", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400819, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.502] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:07:20Z", "value" => "13"} [2026-07-09 13:07:21.526] [DEBUG] QUERY OK db=23.5ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "13", "android_version", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400820, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.527] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "1088"} [2026-07-09 13:07:21.552] [DEBUG] QUERY OK db=23.8ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "1088", "ram_free_mb", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400821, itemkey: "ram_free_mb", value: "1088", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.554] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:07:20Z", "value" => "WIFI"} [2026-07-09 13:07:21.570] [DEBUG] QUERY OK db=15.1ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "WIFI", "network_type", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400822, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.570] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:07:20Z", "value" => "true"} [2026-07-09 13:07:21.606] [DEBUG] QUERY OK db=35.1ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "true", "kiosk_active", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400823, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.607] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:07:20Z", "value" => ""} [2026-07-09 13:07:21.642] [DEBUG] QUERY OK db=33.9ms queue=0.6ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:07:20Z", "sim_operator", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400824, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.643] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.662] [DEBUG] QUERY OK db=19.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "UNKNOWN", "sim_number", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400825, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.663] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.692] [DEBUG] QUERY OK db=27.3ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "UNKNOWN", "sim_iccid", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400826, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.692] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.714] [DEBUG] QUERY OK db=21.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "UNKNOWN", "sim_imsi", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400827, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.714] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.746] [DEBUG] QUERY OK db=31.6ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "UNKNOWN", "sim_iccid2", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400828, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.747] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:07:20Z", "value" => "UNKNOWN"} [2026-07-09 13:07:21.768] [DEBUG] QUERY OK db=20.9ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "UNKNOWN", "sim_imsi2", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400829, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.769] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "28"} [2026-07-09 13:07:21.802] [DEBUG] QUERY OK db=31.5ms queue=0.7ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "28", "data_usage_mb", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400830, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.802] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:07:20Z", "value" => "0"} [2026-07-09 13:07:21.892] [DEBUG] QUERY OK db=87.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07:20Z", "0", "mobile_data_mb", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400831, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:21.895] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:07: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:07:21.940] [DEBUG] QUERY OK db=43.5ms idle=93.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:07: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46793, ~N[2026-07-09 13:07:21], ~N[2026-07-09 13:07:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:21.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400832, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:07:20Z", message: nil, status_log_id: 46793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:21], updated_at: ~N[2026-07-09 13:07:21]}} [2026-07-09 13:07:49.021] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 13:07:54.022] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T13:07:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T13:07:48Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T13:07:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T13:07:48Z","value":"0"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T13:07:48Z","value":"65"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":"1.0.0"},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":"1.0.0"},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T13:07:48Z","vendor":"softpos"} [2026-07-09 13:07:54.022] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:07:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:07:48Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:07:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:07:48Z", "value" => "0"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:07:48Z", "value" => "65"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T13:07:48Z", "vendor" => "softpos"} [2026-07-09 13:07:54.022] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "1.0.0", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:07:54.023] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 13:07:54.023] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 13:07:54.024] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1110.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:07:54.025] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=522.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 13:07:54.026] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms 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` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 13:07:54.028] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms 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-07-09 13:07:54.029] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms 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 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 13:07:54.069] [DEBUG] QUERY OK source="pos_merchant" db=40.0ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:07:54.071] [DEBUG] QUERY OK db=0.9ms queue=0.6ms idle=1147.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 ["513940210000000"] [2026-07-09 13:07:54.071] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 13:07:54.072] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms 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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:07:54.073] [DEBUG] QUERY OK source="address" db=0.8ms 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` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:07:54.073] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 13:07:54.074] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 13:07:54.109] [DEBUG] QUERY OK db=34.2ms 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", "f93feffdf2be32ca20c3a656f5a36f90eb4382ded2dee3854746db9a3fe2cce7", 2403, 969, ~U[2026-07-09 13:07:54Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:07:54.109] [INFO ] AutoPushService: Created push log 33411 for MF919 params.zip [2026-07-09 13:07:54.109] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 2403, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:07:54.109] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:07:54.110] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 13:07:54.112] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=36.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 13:07:54.116] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 13:07:54.152] [DEBUG] QUERY OK db=34.7ms 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", "8b0e4d7c2483411a0d4d558cbf34eb4ce6748b5ab0d5ae2284391de74bb7c586", 2788, 2334, ~U[2026-07-09 13:07:54Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:07:54.152] [INFO ] AutoPushService: Created push log 33412 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 13:07:54.152] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 2788, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:07:54.152] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:07:54.152] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 13:07:54.153] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=40.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 13:07:54.153] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 13:07:54.154] [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.`serial_number` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:07:54.154] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 13:07:54.157] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:07:54.157] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:07:54.158] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:07:54.158] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 13:07:54.158] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 13:07:54.159] [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` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:07:54.159] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 13:07:54.201] [DEBUG] QUERY OK source="tms_terminals" db=41.7ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:07:54], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:07:54.202] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=43.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-09 13:07:54.203] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-09 13:07:54.204] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 13:07:54.205] [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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:07:54.243] [DEBUG] QUERY OK source="tms_terminals" db=37.7ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:07:54], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:07:54.273] [DEBUG] QUERY OK db=29.7ms idle=38.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T13:07:48Z", ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:07:54.273] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46794, oid: "organization_id", upload_time: "2026-07-09T13:07:48Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]} [2026-07-09 13:07:54.274] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:07:48Z", "value" => "online"} [2026-07-09 13:07:54.312] [DEBUG] QUERY OK db=38.3ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T13:07:48Z", "online", "status", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400833, itemkey: "status", value: "online", timestamp: "2026-07-09T13:07:48Z", message: "Terminal status update", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.313] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 13:07:54.313] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:07:48Z", "value" => "100"} [2026-07-09 13:07:54.359] [DEBUG] QUERY OK db=45.8ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T13:07:48Z", "100", "battery", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400834, itemkey: "battery", value: "100", timestamp: "2026-07-09T13:07:48Z", message: "Battery level", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.359] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:07:48Z", "value" => "online"} [2026-07-09 13:07:54.392] [DEBUG] QUERY OK db=32.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T13:07:48Z", "online", "network", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400835, itemkey: "network", value: "online", timestamp: "2026-07-09T13:07:48Z", message: "Network connectivity", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.393] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 13:07:54.393] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:07:48Z", "value" => "0"} [2026-07-09 13:07:54.418] [DEBUG] QUERY OK db=24.2ms 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-07-09T13:07:48Z", "0", "cpu", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400836, itemkey: "cpu", value: "0", timestamp: "2026-07-09T13:07:48Z", message: "CPU usage percentage", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.418] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:07:48Z", "value" => "65"} [2026-07-09 13:07:54.457] [DEBUG] QUERY OK db=38.8ms queue=0.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T13:07:48Z", "65", "memory", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400837, itemkey: "memory", value: "65", timestamp: "2026-07-09T13:07:48Z", message: "Memory usage percentage", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.459] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:07:54.554] [DEBUG] QUERY OK db=53.2ms queue=41.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["EMV Config", "1.0.0", "emv_config", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400838, itemkey: "emv_config", value: "1.0.0", timestamp: nil, message: "EMV Config", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.555] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:07:54.635] [DEBUG] QUERY OK db=38.0ms queue=41.0ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Parameter config", "1.0.0", "parameter_config", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400839, itemkey: "parameter_config", value: "1.0.0", timestamp: nil, message: "Parameter config", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.636] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 13:07:54.673] [DEBUG] QUERY OK db=34.2ms queue=1.6ms idle=82.6ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400840, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.676] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 13:07:54.759] [DEBUG] QUERY OK db=41.0ms queue=41.6ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46794, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400841, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.760] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:07:54.760] [INFO ] Incoming JSON payload: {"oid":"d1185398-6de1-4c73-aa5e-2c3f63f079d9","sn":"98251226730001","uploadTime":"2026-07-09T21:10:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:10:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:07:54.764] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d1185398-6de1-4c73-aa5e-2c3f63f079d9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:10:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:10:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:10:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:10:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:10:58Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:10:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:10:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:10:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:10:58Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:10:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:10: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:10:58Z", "vendor" => "morefun"} [2026-07-09 13:07:54.764] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:07:54.765] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:07:54.766] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:07:54.768] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=94.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-07-09 13:07:54.771] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:07:54.771] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:07:54.777] [DEBUG] QUERY OK source="tms_terminals" db=5.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:07:54.778] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:07:54.823] [DEBUG] QUERY OK source="tms_terminals" db=45.3ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:07:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:07:54.823] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:07:54.827] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=46.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:697 [2026-07-09 13:07:54.877] [DEBUG] QUERY OK source="tms_terminals" db=48.8ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:07:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:07:54.932] [DEBUG] QUERY OK db=54.5ms idle=49.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d1185398-6de1-4c73-aa5e-2c3f63f079d9", "2026-07-09T21:10:58Z", ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:07:54.932] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46795, oid: "d1185398-6de1-4c73-aa5e-2c3f63f079d9", upload_time: "2026-07-09T21:10:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]} [2026-07-09 13:07:54.932] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:10:58Z", "value" => "morefun"} [2026-07-09 13:07:54.976] [DEBUG] QUERY OK db=43.0ms queue=0.4ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "morefun", "vendor", 46795, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:54.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400842, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:54.978] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:10:58Z", "value" => "kiosk_launcher"} [2026-07-09 13:07:55.048] [DEBUG] QUERY OK db=68.9ms queue=0.5ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "kiosk_launcher", "model", 46795, ~N[2026-07-09 13:07:54], ~N[2026-07-09 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400843, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:54], updated_at: ~N[2026-07-09 13:07:54]}} [2026-07-09 13:07:55.049] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:10:58Z", "value" => "1.0"} [2026-07-09 13:07:55.108] [DEBUG] QUERY OK db=58.8ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "1.0", "app_version", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400844, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:07:55.108] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:10:58Z", "value" => "13"} [2026-07-09 13:07:55.161] [DEBUG] QUERY OK db=52.2ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "13", "android_version", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400845, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:07:55.163] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:10:58Z", "value" => "892"} [2026-07-09 13:07:55.230] [DEBUG] QUERY OK db=65.6ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "892", "ram_free_mb", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400846, itemkey: "ram_free_mb", value: "892", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:07:55.230] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:10:58Z", "value" => "WIFI"} [2026-07-09 13:07:55.283] [DEBUG] QUERY OK db=52.3ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "WIFI", "network_type", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400847, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:07:55.285] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:10:58Z", "value" => "true"} [2026-07-09 13:07:55.336] [DEBUG] QUERY OK db=51.2ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "true", "kiosk_active", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:07:55.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400848, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:07:55.338] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:10:58Z", "value" => ""} [2026-07-09 13:07:55.417] [DEBUG] QUERY OK db=77.1ms queue=0.5ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:10:58Z", "sim_operator", 46795, ~N[2026-07-09 13:07:55], ~N[2026-07-09 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:00.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400849, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:10:58Z", message: nil, status_log_id: 46795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:07:55], updated_at: ~N[2026-07-09 13:07:55]}} [2026-07-09 13:08:05.419] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:10:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:10.450] [DEBUG] QUERY OK db=29.4ms idle=1502.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:10:58Z", "UNKNOWN", "sim_number", 46795, ~N[2026-07-09 13:08:10], ~N[2026-07-09 13:08:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:12.121] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_piyush", 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_piyush", 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.1036838730.422051843.34224>, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:08:17.122] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}} terminating ** (stop) :ping_timeout Last message: {:EXIT, #PID<0.2043.0>, :ping_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_piyush"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2047.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2045.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2046.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_piyush"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}]} [2026-07-09 13:08:17.126] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_piyush"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_piyush"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.51>}, :infinity) ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started (stdlib 5.2.3.2) gen.erl:597: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.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: :connect State: %Tortoise.Connection{client_id: "phoenix_client_piyush", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: true, keep_alive: 60, client_id: "phoenix_client_piyush", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, 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: nil, opts: [client_id: "phoenix_client_piyush", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_piyush"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_piyush", online_devices: %{}}, initial_args: [client_id: "phoenix_client_piyush"]}} [2026-07-09 13:08:20.404] [INFO ] Device phoenix_client_piyush connected [2026-07-09 13:08:20.577] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:08:20.577] [INFO ] Incoming JSON payload: {"oid":"c8045f5a-9b35-47c3-bc20-174b2d41902d","sn":"98251226730001","uploadTime":"2026-07-09T21:11:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"ram_free_mb","value":"894","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:11:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:08:20.579] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c8045f5a-9b35-47c3-bc20-174b2d41902d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:11:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:11:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:11:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:11:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "894"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:11:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:11:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:11:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:11:28Z", "vendor" => "morefun"} [2026-07-09 13:08:20.579] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:08:20.579] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:08:20.579] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:08:20.580] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1660.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-07-09 13:08:20.581] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=935.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-07-09 13:08:20.581] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:08:20.582] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:08:20.582] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:08:20.622] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:08:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:08:20.623] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:08:20.623] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=41.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:697 [2026-07-09 13:08:20.686] [DEBUG] QUERY OK source="tms_terminals" db=62.1ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:08:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:08:20.722] [DEBUG] QUERY OK db=35.6ms queue=0.1ms idle=39.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c8045f5a-9b35-47c3-bc20-174b2d41902d", "2026-07-09T21:11:28Z", ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:08:20.722] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46796, oid: "c8045f5a-9b35-47c3-bc20-174b2d41902d", upload_time: "2026-07-09T21:11:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]} [2026-07-09 13:08:20.723] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:11:28Z", "value" => "morefun"} [2026-07-09 13:08:20.743] [DEBUG] QUERY OK db=20.2ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "morefun", "vendor", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400851, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.744] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:11:28Z", "value" => "kiosk_launcher"} [2026-07-09 13:08:20.805] [DEBUG] QUERY OK db=60.7ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "kiosk_launcher", "model", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400852, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.806] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:11:28Z", "value" => "1.0"} [2026-07-09 13:08:20.832] [DEBUG] QUERY OK db=25.6ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "1.0", "app_version", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400853, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.832] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:11:28Z", "value" => "13"} [2026-07-09 13:08:20.856] [DEBUG] QUERY OK db=23.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "13", "android_version", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400854, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.857] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "894"} [2026-07-09 13:08:20.909] [DEBUG] QUERY OK db=51.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "894", "ram_free_mb", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400855, itemkey: "ram_free_mb", value: "894", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.909] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:11:28Z", "value" => "WIFI"} [2026-07-09 13:08:20.939] [DEBUG] QUERY OK db=29.0ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "WIFI", "network_type", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400856, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.939] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:11:28Z", "value" => "true"} [2026-07-09 13:08:20.967] [DEBUG] QUERY OK db=27.7ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "true", "kiosk_active", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:20.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400857, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:20.968] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:11:28Z", "value" => ""} [2026-07-09 13:08:21.051] [DEBUG] QUERY OK db=41.0ms queue=41.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:11:28Z", "sim_operator", 46796, ~N[2026-07-09 13:08:20], ~N[2026-07-09 13:08:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400858, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:20], updated_at: ~N[2026-07-09 13:08:20]}} [2026-07-09 13:08:21.051] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.122] [DEBUG] QUERY OK db=69.9ms idle=84.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "UNKNOWN", "sim_number", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400859, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.122] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.225] [DEBUG] QUERY OK db=102.9ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "UNKNOWN", "sim_iccid", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400860, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.226] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.306] [DEBUG] QUERY OK db=79.3ms idle=104.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "UNKNOWN", "sim_imsi", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400861, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.306] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.345] [DEBUG] QUERY OK db=38.4ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "UNKNOWN", "sim_iccid2", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400862, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.345] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:11:28Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.372] [DEBUG] QUERY OK db=26.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "UNKNOWN", "sim_imsi2", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400863, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.373] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "11"} [2026-07-09 13:08:21.414] [DEBUG] QUERY OK db=40.6ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "11", "data_usage_mb", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400864, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.414] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:11:28Z", "value" => "0"} [2026-07-09 13:08:21.438] [DEBUG] QUERY OK db=22.9ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:28Z", "0", "mobile_data_mb", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400865, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.439] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:08:21.502] [DEBUG] QUERY OK db=62.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46796, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400866, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:11:28Z", message: nil, status_log_id: 46796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.503] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:08:21.504] [INFO ] Incoming JSON payload: {"oid":"818d8b53-4722-462a-8ac5-e9355e430303","sn":"98250904730001","uploadTime":"2026-07-09T13:08:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:08:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:08:21.505] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "818d8b53-4722-462a-8ac5-e9355e430303", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:08:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:08:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:08:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:08:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:08:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:08:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:08:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:08:20Z", "vendor" => "morefun"} [2026-07-09 13:08:21.506] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:08:21.506] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:08:21.506] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:08:21.507] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=68.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-07-09 13:08:21.508] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=5.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-07-09 13:08:21.508] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:08:21.509] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:08:21.510] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:08:21.541] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:08:21], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:08:21.541] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:08:21.543] [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 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:08:21.585] [DEBUG] QUERY OK source="tms_terminals" db=41.7ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:08:21], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:08:21.611] [DEBUG] QUERY OK db=25.7ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "818d8b53-4722-462a-8ac5-e9355e430303", "2026-07-09T13:08:20Z", ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:08:21.612] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46797, oid: "818d8b53-4722-462a-8ac5-e9355e430303", upload_time: "2026-07-09T13:08:20Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]} [2026-07-09 13:08:21.612] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:08:20Z", "value" => "morefun"} [2026-07-09 13:08:21.667] [DEBUG] QUERY OK db=54.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "morefun", "vendor", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400867, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.668] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:08:20Z", "value" => "kiosk_launcher"} [2026-07-09 13:08:21.701] [DEBUG] QUERY OK db=32.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "kiosk_launcher", "model", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400868, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.701] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:08:20Z", "value" => "1.0"} [2026-07-09 13:08:21.737] [DEBUG] QUERY OK db=35.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "1.0", "app_version", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400869, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.737] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:08:20Z", "value" => "13"} [2026-07-09 13:08:21.762] [DEBUG] QUERY OK db=24.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "13", "android_version", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400870, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.763] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "1085"} [2026-07-09 13:08:21.819] [DEBUG] QUERY OK db=56.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "1085", "ram_free_mb", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400871, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.820] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:08:20Z", "value" => "WIFI"} [2026-07-09 13:08:21.840] [DEBUG] QUERY OK db=20.1ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "WIFI", "network_type", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400872, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.841] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:08:20Z", "value" => "true"} [2026-07-09 13:08:21.882] [DEBUG] QUERY OK db=41.1ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "true", "kiosk_active", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400873, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.883] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:08:20Z", "value" => ""} [2026-07-09 13:08:21.916] [DEBUG] QUERY OK db=32.6ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:08:20Z", "sim_operator", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400874, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.917] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.950] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "UNKNOWN", "sim_number", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400875, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.950] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"} [2026-07-09 13:08:21.992] [DEBUG] QUERY OK db=41.2ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "UNKNOWN", "sim_iccid", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:21.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400876, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:21.992] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"} [2026-07-09 13:08:22.007] [DEBUG] QUERY OK db=14.9ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "UNKNOWN", "sim_imsi", 46797, ~N[2026-07-09 13:08:21], ~N[2026-07-09 13:08:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400877, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:21], updated_at: ~N[2026-07-09 13:08:21]}} [2026-07-09 13:08:22.008] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"} [2026-07-09 13:08:22.051] [DEBUG] QUERY OK db=43.3ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "UNKNOWN", "sim_iccid2", 46797, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400878, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.052] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:08:20Z", "value" => "UNKNOWN"} [2026-07-09 13:08:22.087] [DEBUG] QUERY OK db=34.6ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "UNKNOWN", "sim_imsi2", 46797, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400879, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.087] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "28"} [2026-07-09 13:08:22.141] [DEBUG] QUERY OK db=53.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "28", "data_usage_mb", 46797, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400880, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.141] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:08:20Z", "value" => "0"} [2026-07-09 13:08:22.177] [DEBUG] QUERY OK db=35.3ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "0", "mobile_data_mb", 46797, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400881, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.178] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:08:22.216] [DEBUG] QUERY OK db=37.7ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46797, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400882, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.248] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 13:08:22.248] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-09T13:08:20Z","org.device":[{"itemkey":"battery","value":68,"timestamp":"2026-07-09T13:08:20Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-09T13:08:20Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-09T13:08:20Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-09T13:08:20Z","message":""}]} [2026-07-09 13:08:22.248] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => 68}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:08:20Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-09T13:08:20Z"} [2026-07-09 13:08:22.248] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:08:22.249] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:08:22.249] [INFO ] Terminal updated: 61251020798002 [2026-07-09 13:08:22.290] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=33.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:08:22], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:08:22.291] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=40.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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:08:22.318] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:08:22], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:08:22.335] [DEBUG] QUERY OK db=16.6ms idle=27.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-09T13:08:20Z", ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:08:22.336] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46798, oid: "org-id-placeholder", upload_time: "2026-07-09T13:08:20Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]} [2026-07-09 13:08:22.336] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => 68} [2026-07-09 13:08:22.375] [DEBUG] QUERY OK db=38.9ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "68", "battery", 46798, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400883, itemkey: "battery", value: "68", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46798, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.375] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:08:20Z", "value" => 50} [2026-07-09 13:08:22.421] [DEBUG] QUERY OK db=44.1ms queue=1.0ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-09T13:08:20Z", "50", "memory", 46798, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400884, itemkey: "memory", value: "50", timestamp: "2026-07-09T13:08:20Z", message: "Normal", status_log_id: 46798, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.421] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => 50} [2026-07-09 13:08:22.466] [DEBUG] QUERY OK db=43.6ms queue=0.1ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "50", "cpu", 46798, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400885, itemkey: "cpu", value: "50", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46798, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.466] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:08:20Z", "value" => "online"} [2026-07-09 13:08:22.504] [DEBUG] QUERY OK db=37.3ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:20Z", "online", "network", 46798, ~N[2026-07-09 13:08:22], ~N[2026-07-09 13:08:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:22.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400886, itemkey: "network", value: "online", timestamp: "2026-07-09T13:08:20Z", message: nil, status_log_id: 46798, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:22], updated_at: ~N[2026-07-09 13:08:22]}} [2026-07-09 13:08:22.504] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-09 13:08:50.648] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:08:55.649] [INFO ] Incoming JSON payload: {"oid":"89f074d5-3aa1-4522-ae4f-6d77b5b28f88","sn":"98251226730001","uploadTime":"2026-07-09T21:11:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"ram_free_mb","value":"905","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:11:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:08:55.650] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "89f074d5-3aa1-4522-ae4f-6d77b5b28f88", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:11:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:11:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:11:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:11:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "905"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:11:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:11:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:11:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:11:58Z", "vendor" => "morefun"} [2026-07-09 13:08:55.650] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:08:55.650] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:08:55.650] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:08:55.651] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=907.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-07-09 13:08:55.652] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=731.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-07-09 13:08:55.652] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:08:55.653] [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-07-09 13:08:55.653] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:08:55.696] [DEBUG] QUERY OK source="tms_terminals" db=42.6ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:08:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:08:55.696] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:08:55.697] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=43.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:697 [2026-07-09 13:08:55.729] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:08:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:08:55.769] [DEBUG] QUERY OK db=39.4ms idle=31.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "89f074d5-3aa1-4522-ae4f-6d77b5b28f88", "2026-07-09T21:11:58Z", ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:08:55.769] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46799, oid: "89f074d5-3aa1-4522-ae4f-6d77b5b28f88", upload_time: "2026-07-09T21:11:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]} [2026-07-09 13:08:55.769] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:11:58Z", "value" => "morefun"} [2026-07-09 13:08:55.805] [DEBUG] QUERY OK db=35.7ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "morefun", "vendor", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400887, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.806] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:11:58Z", "value" => "kiosk_launcher"} [2026-07-09 13:08:55.833] [DEBUG] QUERY OK db=27.1ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "kiosk_launcher", "model", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400888, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.834] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:11:58Z", "value" => "1.0"} [2026-07-09 13:08:55.878] [DEBUG] QUERY OK db=43.9ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "1.0", "app_version", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400889, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.878] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:11:58Z", "value" => "13"} [2026-07-09 13:08:55.899] [DEBUG] QUERY OK db=19.9ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "13", "android_version", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400890, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.899] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "905"} [2026-07-09 13:08:55.940] [DEBUG] QUERY OK db=40.7ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "905", "ram_free_mb", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400891, itemkey: "ram_free_mb", value: "905", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.941] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:11:58Z", "value" => "WIFI"} [2026-07-09 13:08:55.984] [DEBUG] QUERY OK db=42.4ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "WIFI", "network_type", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:55.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400892, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:55.984] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:11:58Z", "value" => "true"} [2026-07-09 13:08:56.086] [DEBUG] QUERY OK db=101.4ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "true", "kiosk_active", 46799, ~N[2026-07-09 13:08:55], ~N[2026-07-09 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400893, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:55], updated_at: ~N[2026-07-09 13:08:55]}} [2026-07-09 13:08:56.087] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:11:58Z", "value" => ""} [2026-07-09 13:08:56.165] [DEBUG] QUERY OK db=78.5ms idle=103.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:11:58Z", "sim_operator", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400894, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.166] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:56.263] [DEBUG] QUERY OK db=96.7ms idle=79.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "UNKNOWN", "sim_number", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400895, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.263] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:56.334] [DEBUG] QUERY OK db=70.1ms idle=98.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "UNKNOWN", "sim_iccid", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400896, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.335] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:56.387] [DEBUG] QUERY OK db=51.9ms idle=72.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "UNKNOWN", "sim_imsi", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400897, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.387] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:56.431] [DEBUG] QUERY OK db=43.3ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "UNKNOWN", "sim_iccid2", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400898, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.432] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:11:58Z", "value" => "UNKNOWN"} [2026-07-09 13:08:56.476] [DEBUG] QUERY OK db=43.2ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "UNKNOWN", "sim_imsi2", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400899, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.476] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "11"} [2026-07-09 13:08:56.504] [DEBUG] QUERY OK db=28.0ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "11", "data_usage_mb", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400900, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.505] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:11:58Z", "value" => "0"} [2026-07-09 13:08:56.557] [DEBUG] QUERY OK db=51.9ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11:58Z", "0", "mobile_data_mb", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400901, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.558] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:08:56.597] [DEBUG] QUERY OK db=38.3ms queue=0.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:11: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46799, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400902, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:11:58Z", message: nil, status_log_id: 46799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.598] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:08:56.598] [INFO ] Incoming JSON payload: {"oid":"c2dbb510-801b-4d96-b67f-4a542788adee","sn":"98250904730001","uploadTime":"2026-07-09T13:08:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:08:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:08:56.599] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c2dbb510-801b-4d96-b67f-4a542788adee", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:08:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:08:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:08:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:08:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:08:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:08:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:08:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:08:50Z", "vendor" => "morefun"} [2026-07-09 13:08:56.599] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:08:56.599] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:08:56.599] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:08:56.600] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=42.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-07-09 13:08:56.601] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=4.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-07-09 13:08:56.601] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:08:56.602] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:08:56.603] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:08:56.649] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:08:56], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:08:56.649] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:08:56.650] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=46.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:08:56.680] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:08:56], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:08:56.701] [DEBUG] QUERY OK db=20.4ms queue=0.2ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "c2dbb510-801b-4d96-b67f-4a542788adee", "2026-07-09T13:08:50Z", ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:08:56.701] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46800, oid: "c2dbb510-801b-4d96-b67f-4a542788adee", upload_time: "2026-07-09T13:08:50Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]} [2026-07-09 13:08:56.701] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:08:50Z", "value" => "morefun"} [2026-07-09 13:08:56.745] [DEBUG] QUERY OK db=43.8ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "morefun", "vendor", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400903, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.746] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:08:50Z", "value" => "kiosk_launcher"} [2026-07-09 13:08:56.787] [DEBUG] QUERY OK db=40.7ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "kiosk_launcher", "model", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400904, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.787] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:08:50Z", "value" => "1.0"} [2026-07-09 13:08:56.823] [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-07-09T13:08:50Z", "1.0", "app_version", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400905, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.823] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:08:50Z", "value" => "13"} [2026-07-09 13:08:56.857] [DEBUG] QUERY OK db=33.7ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "13", "android_version", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400906, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.858] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "1083"} [2026-07-09 13:08:56.899] [DEBUG] QUERY OK db=40.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "1083", "ram_free_mb", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400907, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.899] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:08:50Z", "value" => "WIFI"} [2026-07-09 13:08:56.931] [DEBUG] QUERY OK db=31.6ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "WIFI", "network_type", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400908, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.932] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:08:50Z", "value" => "true"} [2026-07-09 13:08:56.954] [DEBUG] QUERY OK db=22.4ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "true", "kiosk_active", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:56.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400909, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:56.955] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:08:50Z", "value" => ""} [2026-07-09 13:08:57.000] [DEBUG] QUERY OK db=45.0ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:08:50Z", "sim_operator", 46800, ~N[2026-07-09 13:08:56], ~N[2026-07-09 13:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400910, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:56], updated_at: ~N[2026-07-09 13:08:56]}} [2026-07-09 13:08:57.000] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"} [2026-07-09 13:08:57.061] [DEBUG] QUERY OK db=59.7ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "UNKNOWN", "sim_number", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400911, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.061] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"} [2026-07-09 13:08:57.084] [DEBUG] QUERY OK db=22.8ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "UNKNOWN", "sim_iccid", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400912, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.085] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"} [2026-07-09 13:08:57.114] [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-07-09T13:08:50Z", "UNKNOWN", "sim_imsi", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400913, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.115] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"} [2026-07-09 13:08:57.154] [DEBUG] QUERY OK db=39.3ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "UNKNOWN", "sim_iccid2", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400914, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.155] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:08:50Z", "value" => "UNKNOWN"} [2026-07-09 13:08:57.182] [DEBUG] QUERY OK db=26.9ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "UNKNOWN", "sim_imsi2", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400915, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.182] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "28"} [2026-07-09 13:08:57.206] [DEBUG] QUERY OK db=23.5ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "28", "data_usage_mb", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400916, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.207] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:08:50Z", "value" => "0"} [2026-07-09 13:08:57.267] [DEBUG] QUERY OK db=59.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08:50Z", "0", "mobile_data_mb", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400917, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:08:57.268] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:08:57.303] [DEBUG] QUERY OK db=33.8ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:08: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46800, ~N[2026-07-09 13:08:57], ~N[2026-07-09 13:08:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:08:57.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400918, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:08:50Z", message: nil, status_log_id: 46800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:08:57], updated_at: ~N[2026-07-09 13:08:57]}} [2026-07-09 13:09:21.025] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:09:26.026] [INFO ] Incoming JSON payload: {"oid":"4fd12226-a231-4f8f-8709-c47f008963d1","sn":"98251226730001","uploadTime":"2026-07-09T21:12:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"ram_free_mb","value":"909","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:12:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:09:30.593] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4fd12226-a231-4f8f-8709-c47f008963d1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:12:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:12:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:12:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:12:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "909"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:12:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:12:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:12:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:12:29Z", "vendor" => "morefun"} [2026-07-09 13:09:30.594] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:09:30.594] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:09:30.594] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:09:30.596] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.8ms idle=722.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-07-09 13:09:30.598] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=669.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-07-09 13:09:30.598] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:09:30.599] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:09:30.600] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:09:30.633] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:09:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:09:30.633] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:09:30.635] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:09:30.677] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:09:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:09:30.707] [DEBUG] QUERY OK db=29.6ms idle=42.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4fd12226-a231-4f8f-8709-c47f008963d1", "2026-07-09T21:12:29Z", ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:09:30.708] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46801, oid: "4fd12226-a231-4f8f-8709-c47f008963d1", upload_time: "2026-07-09T21:12:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]} [2026-07-09 13:09:30.708] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:12:29Z", "value" => "morefun"} [2026-07-09 13:09:30.732] [DEBUG] QUERY OK db=24.1ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "morefun", "vendor", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400919, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.733] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:12:29Z", "value" => "kiosk_launcher"} [2026-07-09 13:09:30.784] [DEBUG] QUERY OK db=50.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "kiosk_launcher", "model", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400920, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.784] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:12:29Z", "value" => "1.0"} [2026-07-09 13:09:30.828] [DEBUG] QUERY OK db=43.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "1.0", "app_version", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400921, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.828] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:12:29Z", "value" => "13"} [2026-07-09 13:09:30.859] [DEBUG] QUERY OK db=30.4ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "13", "android_version", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400922, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.859] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "909"} [2026-07-09 13:09:30.902] [DEBUG] QUERY OK db=41.8ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "909", "ram_free_mb", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400923, itemkey: "ram_free_mb", value: "909", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.902] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:12:29Z", "value" => "WIFI"} [2026-07-09 13:09:30.944] [DEBUG] QUERY OK db=41.0ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "WIFI", "network_type", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400924, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.944] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:12:29Z", "value" => "true"} [2026-07-09 13:09:30.980] [DEBUG] QUERY OK db=35.3ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "true", "kiosk_active", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:30.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400925, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:30.980] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:12:29Z", "value" => ""} [2026-07-09 13:09:31.022] [DEBUG] QUERY OK db=41.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:12:29Z", "sim_operator", 46801, ~N[2026-07-09 13:09:30], ~N[2026-07-09 13:09:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400926, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:30], updated_at: ~N[2026-07-09 13:09:30]}} [2026-07-09 13:09:31.023] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.120] [DEBUG] QUERY OK db=96.7ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "UNKNOWN", "sim_number", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400927, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.120] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.252] [DEBUG] QUERY OK db=131.0ms idle=98.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "UNKNOWN", "sim_iccid", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400928, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.252] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.282] [DEBUG] QUERY OK db=29.1ms queue=0.5ms idle=132.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "UNKNOWN", "sim_imsi", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400929, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.283] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.313] [DEBUG] QUERY OK db=29.8ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "UNKNOWN", "sim_iccid2", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400930, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.313] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:12:29Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.335] [DEBUG] QUERY OK db=21.0ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "UNKNOWN", "sim_imsi2", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400931, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.335] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "11"} [2026-07-09 13:09:31.373] [DEBUG] QUERY OK db=37.2ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "11", "data_usage_mb", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400932, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.373] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:12:29Z", "value" => "0"} [2026-07-09 13:09:31.412] [DEBUG] QUERY OK db=38.4ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:29Z", "0", "mobile_data_mb", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400933, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.413] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:09:31.464] [DEBUG] QUERY OK db=50.2ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46801, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400934, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:12:29Z", message: nil, status_log_id: 46801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.465] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:09:31.465] [INFO ] Incoming JSON payload: {"oid":"fca2f164-0fb1-4fe1-b902-eba2a1f4a61c","sn":"98250904730001","uploadTime":"2026-07-09T13:09:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"ram_free_mb","value":"1088","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:09:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:09:31.466] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fca2f164-0fb1-4fe1-b902-eba2a1f4a61c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:09:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:09:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:09:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:09:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "1088"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:09:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:09:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:09:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:09:20Z", "vendor" => "morefun"} [2026-07-09 13:09:31.466] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:09:31.466] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:09:31.467] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:09:31.470] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=55.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-07-09 13:09:31.471] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=6.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-07-09 13:09:31.471] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:09:31.472] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:09:31.472] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:09:31.506] [DEBUG] QUERY OK source="tms_terminals" db=33.0ms queue=0.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:09:31], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:09:31.506] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:09:31.507] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=34.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:09:31.548] [DEBUG] QUERY OK source="tms_terminals" db=39.8ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:09:31], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:09:31.581] [DEBUG] QUERY OK db=32.6ms idle=41.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "fca2f164-0fb1-4fe1-b902-eba2a1f4a61c", "2026-07-09T13:09:20Z", ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:09:31.581] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46802, oid: "fca2f164-0fb1-4fe1-b902-eba2a1f4a61c", upload_time: "2026-07-09T13:09:20Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]} [2026-07-09 13:09:31.582] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:09:20Z", "value" => "morefun"} [2026-07-09 13:09:31.634] [DEBUG] QUERY OK db=51.8ms queue=0.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "morefun", "vendor", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400935, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.634] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:09:20Z", "value" => "kiosk_launcher"} [2026-07-09 13:09:31.670] [DEBUG] QUERY OK db=35.3ms queue=0.2ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "kiosk_launcher", "model", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400936, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.671] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:09:20Z", "value" => "1.0"} [2026-07-09 13:09:31.700] [DEBUG] QUERY OK db=28.7ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "1.0", "app_version", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400937, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.701] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:09:20Z", "value" => "13"} [2026-07-09 13:09:31.739] [DEBUG] QUERY OK db=38.0ms queue=0.1ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "13", "android_version", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400938, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.740] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "1088"} [2026-07-09 13:09:31.771] [DEBUG] QUERY OK db=31.4ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "1088", "ram_free_mb", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400939, itemkey: "ram_free_mb", value: "1088", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.772] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:09:20Z", "value" => "WIFI"} [2026-07-09 13:09:31.817] [DEBUG] QUERY OK db=45.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "WIFI", "network_type", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400940, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.818] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:09:20Z", "value" => "true"} [2026-07-09 13:09:31.856] [DEBUG] QUERY OK db=38.2ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "true", "kiosk_active", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400941, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.857] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:09:20Z", "value" => ""} [2026-07-09 13:09:31.896] [DEBUG] QUERY OK db=38.6ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:09:20Z", "sim_operator", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400942, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.896] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.938] [DEBUG] QUERY OK db=41.8ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "UNKNOWN", "sim_number", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400943, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.939] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"} [2026-07-09 13:09:31.980] [DEBUG] QUERY OK db=41.2ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "UNKNOWN", "sim_iccid", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:31.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400944, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:31.981] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"} [2026-07-09 13:09:32.021] [DEBUG] QUERY OK db=39.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "UNKNOWN", "sim_imsi", 46802, ~N[2026-07-09 13:09:31], ~N[2026-07-09 13:09:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400945, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:31], updated_at: ~N[2026-07-09 13:09:31]}} [2026-07-09 13:09:32.021] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"} [2026-07-09 13:09:32.072] [DEBUG] QUERY OK db=50.4ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "UNKNOWN", "sim_iccid2", 46802, ~N[2026-07-09 13:09:32], ~N[2026-07-09 13:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400946, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:32], updated_at: ~N[2026-07-09 13:09:32]}} [2026-07-09 13:09:32.072] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:09:20Z", "value" => "UNKNOWN"} [2026-07-09 13:09:32.117] [DEBUG] QUERY OK db=44.5ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "UNKNOWN", "sim_imsi2", 46802, ~N[2026-07-09 13:09:32], ~N[2026-07-09 13:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400947, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:32], updated_at: ~N[2026-07-09 13:09:32]}} [2026-07-09 13:09:32.118] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "28"} [2026-07-09 13:09:32.163] [DEBUG] QUERY OK db=44.9ms queue=0.3ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "28", "data_usage_mb", 46802, ~N[2026-07-09 13:09:32], ~N[2026-07-09 13:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400948, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:32], updated_at: ~N[2026-07-09 13:09:32]}} [2026-07-09 13:09:32.164] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:09:20Z", "value" => "0"} [2026-07-09 13:09:32.213] [DEBUG] QUERY OK db=48.8ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:20Z", "0", "mobile_data_mb", 46802, ~N[2026-07-09 13:09:32], ~N[2026-07-09 13:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400949, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:32], updated_at: ~N[2026-07-09 13:09:32]}} [2026-07-09 13:09:32.214] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:09:32.268] [DEBUG] QUERY OK db=53.6ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46802, ~N[2026-07-09 13:09:32], ~N[2026-07-09 13:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:09:32.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400950, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:09:20Z", message: nil, status_log_id: 46802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:09:32], updated_at: ~N[2026-07-09 13:09:32]}} [2026-07-09 13:09:51.111] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:09:56.112] [INFO ] Incoming JSON payload: {"oid":"2ea08727-7cb8-4ce4-bbda-c87f289b68f1","sn":"98251226730001","uploadTime":"2026-07-09T21:12:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:12:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:10:00.611] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2ea08727-7cb8-4ce4-bbda-c87f289b68f1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:12:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:12:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:12:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:12:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:12:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:12:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:12:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:12:59Z", "vendor" => "morefun"} [2026-07-09 13:10:00.611] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:10:00.611] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:10:00.612] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:10:00.615] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms idle=1640.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-07-09 13:10:00.616] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:10:00.616] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:10:00.617] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:10:00.618] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:10:00.664] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:10:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:10:00.664] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:10:00.665] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms idle=46.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:697 [2026-07-09 13:10:00.701] [DEBUG] QUERY OK source="tms_terminals" db=35.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:10:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:10:00.716] [DEBUG] QUERY OK db=14.5ms idle=36.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2ea08727-7cb8-4ce4-bbda-c87f289b68f1", "2026-07-09T21:12:59Z", ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:10:00.716] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46803, oid: "2ea08727-7cb8-4ce4-bbda-c87f289b68f1", upload_time: "2026-07-09T21:12:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]} [2026-07-09 13:10:00.716] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:12:59Z", "value" => "morefun"} [2026-07-09 13:10:00.768] [DEBUG] QUERY OK db=51.3ms queue=0.1ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "morefun", "vendor", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400951, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.769] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:12:59Z", "value" => "kiosk_launcher"} [2026-07-09 13:10:00.801] [DEBUG] QUERY OK db=31.7ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "kiosk_launcher", "model", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400952, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.801] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:12:59Z", "value" => "1.0"} [2026-07-09 13:10:00.829] [DEBUG] QUERY OK db=27.2ms queue=0.1ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "1.0", "app_version", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400953, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.829] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:12:59Z", "value" => "13"} [2026-07-09 13:10:00.865] [DEBUG] QUERY OK db=34.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "13", "android_version", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400954, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.865] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "900"} [2026-07-09 13:10:00.892] [DEBUG] QUERY OK db=27.2ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "900", "ram_free_mb", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400955, itemkey: "ram_free_mb", value: "900", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.894] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:12:59Z", "value" => "WIFI"} [2026-07-09 13:10:00.935] [DEBUG] QUERY OK db=39.9ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "WIFI", "network_type", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:00.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400956, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:00.935] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:12:59Z", "value" => "true"} [2026-07-09 13:10:01.083] [DEBUG] QUERY OK db=146.7ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "true", "kiosk_active", 46803, ~N[2026-07-09 13:10:00], ~N[2026-07-09 13:10:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400957, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:00], updated_at: ~N[2026-07-09 13:10:00]}} [2026-07-09 13:10:01.083] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:12:59Z", "value" => ""} [2026-07-09 13:10:01.190] [DEBUG] QUERY OK db=106.6ms idle=107.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:12:59Z", "sim_operator", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400958, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.191] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"} [2026-07-09 13:10:01.292] [DEBUG] QUERY OK db=100.3ms idle=108.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "UNKNOWN", "sim_number", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400959, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.292] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"} [2026-07-09 13:10:01.324] [DEBUG] QUERY OK db=31.2ms idle=101.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "UNKNOWN", "sim_iccid", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400960, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.324] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"} [2026-07-09 13:10:01.348] [DEBUG] QUERY OK db=23.5ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "UNKNOWN", "sim_imsi", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400961, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.348] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"} [2026-07-09 13:10:01.388] [DEBUG] QUERY OK db=38.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "UNKNOWN", "sim_iccid2", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400962, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.388] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:12:59Z", "value" => "UNKNOWN"} [2026-07-09 13:10:01.421] [DEBUG] QUERY OK db=32.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "UNKNOWN", "sim_imsi2", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400963, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.422] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "11"} [2026-07-09 13:10:01.452] [DEBUG] QUERY OK db=30.3ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "11", "data_usage_mb", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400964, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.453] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:12:59Z", "value" => "0"} [2026-07-09 13:10:01.482] [DEBUG] QUERY OK db=29.4ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12:59Z", "0", "mobile_data_mb", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400965, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.483] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:10:01.541] [DEBUG] QUERY OK db=56.9ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:12: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46803, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400966, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:12:59Z", message: nil, status_log_id: 46803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.542] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:10:01.542] [INFO ] Incoming JSON payload: {"oid":"260f9bb7-9d3b-4b18-88c6-0d84027c6ca6","sn":"98250904730001","uploadTime":"2026-07-09T13:09:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:09:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:10:01.545] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "260f9bb7-9d3b-4b18-88c6-0d84027c6ca6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:09:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:09:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:09:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:09:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:09:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:09:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:09:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:09:50Z", "vendor" => "morefun"} [2026-07-09 13:10:01.545] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:10:01.545] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:10:01.546] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:10:01.547] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=64.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-07-09 13:10:01.548] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=6.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-07-09 13:10:01.548] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:10:01.549] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:10:01.549] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:10:01.595] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:10:01], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:10:01.595] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:10:01.596] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=46.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:10:01.641] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:10:01], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:10:01.684] [DEBUG] QUERY OK db=42.6ms idle=44.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "260f9bb7-9d3b-4b18-88c6-0d84027c6ca6", "2026-07-09T13:09:50Z", ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:10:01.686] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46804, oid: "260f9bb7-9d3b-4b18-88c6-0d84027c6ca6", upload_time: "2026-07-09T13:09:50Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]} [2026-07-09 13:10:01.686] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:09:50Z", "value" => "morefun"} [2026-07-09 13:10:01.734] [DEBUG] QUERY OK db=47.6ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "morefun", "vendor", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400967, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.735] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:09:50Z", "value" => "kiosk_launcher"} [2026-07-09 13:10:01.763] [DEBUG] QUERY OK db=26.6ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "kiosk_launcher", "model", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400968, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.765] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:09:50Z", "value" => "1.0"} [2026-07-09 13:10:01.816] [DEBUG] QUERY OK db=50.3ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "1.0", "app_version", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400969, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.817] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:09:50Z", "value" => "13"} [2026-07-09 13:10:01.866] [DEBUG] QUERY OK db=48.0ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "13", "android_version", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400970, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.866] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "1081"} [2026-07-09 13:10:01.900] [DEBUG] QUERY OK db=33.5ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "1081", "ram_free_mb", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400971, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.900] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:09:50Z", "value" => "WIFI"} [2026-07-09 13:10:01.947] [DEBUG] QUERY OK db=46.5ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "WIFI", "network_type", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400972, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.948] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:09:50Z", "value" => "true"} [2026-07-09 13:10:01.988] [DEBUG] QUERY OK db=38.6ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "true", "kiosk_active", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:01.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400973, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:01.989] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:09:50Z", "value" => ""} [2026-07-09 13:10:02.040] [DEBUG] QUERY OK db=49.8ms queue=0.9ms idle=7.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:09:50Z", "sim_operator", 46804, ~N[2026-07-09 13:10:01], ~N[2026-07-09 13:10:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400974, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:01], updated_at: ~N[2026-07-09 13:10:01]}} [2026-07-09 13:10:02.042] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"} [2026-07-09 13:10:02.090] [DEBUG] QUERY OK db=45.5ms queue=1.0ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "UNKNOWN", "sim_number", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400975, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.093] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"} [2026-07-09 13:10:02.118] [DEBUG] QUERY OK db=25.3ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "UNKNOWN", "sim_iccid", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400976, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.119] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"} [2026-07-09 13:10:02.167] [DEBUG] QUERY OK db=45.4ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "UNKNOWN", "sim_imsi", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400977, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.168] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"} [2026-07-09 13:10:02.224] [DEBUG] QUERY OK db=55.4ms queue=0.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "UNKNOWN", "sim_iccid2", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400978, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.224] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:09:50Z", "value" => "UNKNOWN"} [2026-07-09 13:10:02.254] [DEBUG] QUERY OK db=29.0ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "UNKNOWN", "sim_imsi2", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400979, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.254] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "28"} [2026-07-09 13:10:02.284] [DEBUG] QUERY OK db=29.6ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "28", "data_usage_mb", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400980, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.284] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:09:50Z", "value" => "0"} [2026-07-09 13:10:02.330] [DEBUG] QUERY OK db=45.3ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:09:50Z", "0", "mobile_data_mb", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400981, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:02.331] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:10:02.381] [DEBUG] QUERY OK db=48.2ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46804, ~N[2026-07-09 13:10:02], ~N[2026-07-09 13:10:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:02.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400982, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:09:50Z", message: nil, status_log_id: 46804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:02], updated_at: ~N[2026-07-09 13:10:02]}} [2026-07-09 13:10:21.437] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:10:26.438] [INFO ] Incoming JSON payload: {"oid":"292ceaa6-afc1-4ee6-a00c-29b2df9f3954","sn":"98250904730001","uploadTime":"2026-07-09T13:10:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"ram_free_mb","value":"1086","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:10:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:10:30.622] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "292ceaa6-afc1-4ee6-a00c-29b2df9f3954", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:10:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:10:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:10:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:10:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "1086"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:10:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:10:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:10:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:10:20Z", "vendor" => "morefun"} [2026-07-09 13:10:30.622] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:10:30.622] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:10:30.622] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:10:30.623] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=688.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-07-09 13:10:30.624] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=480.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-07-09 13:10:30.624] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:10:30.625] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:10:30.625] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:10:30.653] [DEBUG] QUERY OK source="tms_terminals" db=26.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:10:30], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:10:30.653] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:10:30.655] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:10:30.683] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:10:30], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:10:30.717] [DEBUG] QUERY OK db=33.0ms idle=28.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "292ceaa6-afc1-4ee6-a00c-29b2df9f3954", "2026-07-09T13:10:20Z", ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:10:30.717] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46805, oid: "292ceaa6-afc1-4ee6-a00c-29b2df9f3954", upload_time: "2026-07-09T13:10:20Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]} [2026-07-09 13:10:30.717] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:10:20Z", "value" => "morefun"} [2026-07-09 13:10:30.740] [DEBUG] QUERY OK db=22.8ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "morefun", "vendor", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400983, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.741] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:10:20Z", "value" => "kiosk_launcher"} [2026-07-09 13:10:30.767] [DEBUG] QUERY OK db=25.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "kiosk_launcher", "model", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400984, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.767] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:10:20Z", "value" => "1.0"} [2026-07-09 13:10:30.791] [DEBUG] QUERY OK db=23.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "1.0", "app_version", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400985, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.791] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:10:20Z", "value" => "13"} [2026-07-09 13:10:30.818] [DEBUG] QUERY OK db=26.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "13", "android_version", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400986, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.819] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "1086"} [2026-07-09 13:10:30.842] [DEBUG] QUERY OK db=22.8ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "1086", "ram_free_mb", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400987, itemkey: "ram_free_mb", value: "1086", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.842] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:10:20Z", "value" => "WIFI"} [2026-07-09 13:10:30.866] [DEBUG] QUERY OK db=23.9ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "WIFI", "network_type", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400988, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.867] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:10:20Z", "value" => "true"} [2026-07-09 13:10:30.896] [DEBUG] QUERY OK db=28.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "true", "kiosk_active", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400989, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.896] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:10:20Z", "value" => ""} [2026-07-09 13:10:30.919] [DEBUG] QUERY OK db=22.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:10:20Z", "sim_operator", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400990, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.919] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"} [2026-07-09 13:10:30.939] [DEBUG] QUERY OK db=18.8ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "UNKNOWN", "sim_number", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400991, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.939] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"} [2026-07-09 13:10:30.963] [DEBUG] QUERY OK db=23.9ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "UNKNOWN", "sim_iccid", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400992, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:30.964] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"} [2026-07-09 13:10:30.999] [DEBUG] QUERY OK db=32.9ms queue=2.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "UNKNOWN", "sim_imsi", 46805, ~N[2026-07-09 13:10:30], ~N[2026-07-09 13:10:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:30.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400993, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:30], updated_at: ~N[2026-07-09 13:10:30]}} [2026-07-09 13:10:31.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.026] [DEBUG] QUERY OK db=25.6ms queue=0.1ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "UNKNOWN", "sim_iccid2", 46805, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400994, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.026] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:10:20Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.069] [DEBUG] QUERY OK db=42.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "UNKNOWN", "sim_imsi2", 46805, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400995, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.069] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "28"} [2026-07-09 13:10:31.134] [DEBUG] QUERY OK db=64.5ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "28", "data_usage_mb", 46805, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400996, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.137] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:10:20Z", "value" => "0"} [2026-07-09 13:10:31.162] [DEBUG] QUERY OK db=24.5ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:20Z", "0", "mobile_data_mb", 46805, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400997, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.163] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:10:31.207] [DEBUG] QUERY OK db=42.7ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46805, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400998, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:10:20Z", message: nil, status_log_id: 46805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.211] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:10:31.211] [INFO ] Incoming JSON payload: {"oid":"49d1b36f-3357-4c4e-bc90-8b9f68bbcb49","sn":"98251226730001","uploadTime":"2026-07-09T21:13:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"ram_free_mb","value":"902","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:13:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:10:31.212] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "49d1b36f-3357-4c4e-bc90-8b9f68bbcb49", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:13:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:13:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:13:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:13:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "902"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:13:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:13:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:13:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:13:29Z", "vendor" => "morefun"} [2026-07-09 13:10:31.212] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:10:31.213] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:10:31.215] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:10:31.216] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=53.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-07-09 13:10:31.218] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=10.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-07-09 13:10:31.218] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:10:31.220] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:10:31.220] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:10:31.251] [DEBUG] QUERY OK source="tms_terminals" db=30.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:10:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:10:31.251] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:10:31.253] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:10:31.285] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:10:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:10:31.308] [DEBUG] QUERY OK db=22.5ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "49d1b36f-3357-4c4e-bc90-8b9f68bbcb49", "2026-07-09T21:13:29Z", ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:10:31.308] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46806, oid: "49d1b36f-3357-4c4e-bc90-8b9f68bbcb49", upload_time: "2026-07-09T21:13:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]} [2026-07-09 13:10:31.309] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:13:29Z", "value" => "morefun"} [2026-07-09 13:10:31.344] [DEBUG] QUERY OK db=35.4ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "morefun", "vendor", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 400999, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.345] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:13:29Z", "value" => "kiosk_launcher"} [2026-07-09 13:10:31.362] [DEBUG] QUERY OK db=16.4ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "kiosk_launcher", "model", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401000, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.362] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:13:29Z", "value" => "1.0"} [2026-07-09 13:10:31.380] [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-07-09T21:13:29Z", "1.0", "app_version", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401001, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.381] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:13:29Z", "value" => "13"} [2026-07-09 13:10:31.404] [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-07-09T21:13:29Z", "13", "android_version", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401002, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.404] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "902"} [2026-07-09 13:10:31.428] [DEBUG] QUERY OK db=23.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "902", "ram_free_mb", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401003, itemkey: "ram_free_mb", value: "902", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.428] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:13:29Z", "value" => "WIFI"} [2026-07-09 13:10:31.453] [DEBUG] QUERY OK db=24.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "WIFI", "network_type", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401004, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.454] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:13:29Z", "value" => "true"} [2026-07-09 13:10:31.477] [DEBUG] QUERY OK db=23.2ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "true", "kiosk_active", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401005, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.478] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:13:29Z", "value" => ""} [2026-07-09 13:10:31.496] [DEBUG] QUERY OK db=17.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:13:29Z", "sim_operator", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401006, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.496] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.519] [DEBUG] QUERY OK db=22.5ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "UNKNOWN", "sim_number", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401007, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.520] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.558] [DEBUG] QUERY OK db=37.6ms queue=0.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "UNKNOWN", "sim_iccid", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401008, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.558] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.581] [DEBUG] QUERY OK db=22.1ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "UNKNOWN", "sim_imsi", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401009, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.581] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.598] [DEBUG] QUERY OK db=16.8ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "UNKNOWN", "sim_iccid2", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401010, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.599] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:13:29Z", "value" => "UNKNOWN"} [2026-07-09 13:10:31.622] [DEBUG] QUERY OK db=22.7ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "UNKNOWN", "sim_imsi2", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401011, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.622] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "11"} [2026-07-09 13:10:31.657] [DEBUG] QUERY OK db=34.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "11", "data_usage_mb", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401012, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.657] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:13:29Z", "value" => "0"} [2026-07-09 13:10:31.681] [DEBUG] QUERY OK db=22.8ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:29Z", "0", "mobile_data_mb", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401013, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:31.682] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:10:31.718] [DEBUG] QUERY OK db=35.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46806, ~N[2026-07-09 13:10:31], ~N[2026-07-09 13:10:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:10:31.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401014, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:13:29Z", message: nil, status_log_id: 46806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:10:31], updated_at: ~N[2026-07-09 13:10:31]}} [2026-07-09 13:10:51.391] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:10:56.392] [INFO ] Incoming JSON payload: {"oid":"614f1100-126a-49b0-99a8-b90de8dc6911","sn":"98251226730001","uploadTime":"2026-07-09T21:13:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"ram_free_mb","value":"898","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:13:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:11:01.394] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "614f1100-126a-49b0-99a8-b90de8dc6911", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:13:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:13:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:13:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:13:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "898"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:13:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:13:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:13:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:13:59Z", "vendor" => "morefun"} [2026-07-09 13:11:01.395] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:11:01.395] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:11:01.395] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:11:01.396] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=426.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-07-09 13:11:01.398] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.3ms idle=157.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-07-09 13:11:01.398] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:11:01.400] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:11:01.400] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:11:01.427] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:11:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:11:01.427] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:11:01.428] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=27.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:697 [2026-07-09 13:11:01.457] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:11:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:11:01.488] [DEBUG] QUERY OK db=30.7ms idle=29.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "614f1100-126a-49b0-99a8-b90de8dc6911", "2026-07-09T21:13:59Z", ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:11:01.489] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46807, oid: "614f1100-126a-49b0-99a8-b90de8dc6911", upload_time: "2026-07-09T21:13:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]} [2026-07-09 13:11:01.489] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:13:59Z", "value" => "morefun"} [2026-07-09 13:11:01.510] [DEBUG] QUERY OK db=20.5ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "morefun", "vendor", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401015, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.510] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:13:59Z", "value" => "kiosk_launcher"} [2026-07-09 13:11:01.539] [DEBUG] QUERY OK db=28.8ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "kiosk_launcher", "model", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401016, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.540] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:13:59Z", "value" => "1.0"} [2026-07-09 13:11:01.574] [DEBUG] QUERY OK db=34.1ms queue=0.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "1.0", "app_version", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401017, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.575] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:13:59Z", "value" => "13"} [2026-07-09 13:11:01.601] [DEBUG] QUERY OK db=24.8ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "13", "android_version", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401018, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.601] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "898"} [2026-07-09 13:11:01.628] [DEBUG] QUERY OK db=26.5ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "898", "ram_free_mb", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401019, itemkey: "ram_free_mb", value: "898", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.629] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:13:59Z", "value" => "WIFI"} [2026-07-09 13:11:01.658] [DEBUG] QUERY OK db=27.7ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "WIFI", "network_type", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401020, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.658] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:13:59Z", "value" => "true"} [2026-07-09 13:11:01.694] [DEBUG] QUERY OK db=35.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "true", "kiosk_active", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401021, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.695] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:13:59Z", "value" => ""} [2026-07-09 13:11:01.729] [DEBUG] QUERY OK db=32.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:13:59Z", "sim_operator", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401022, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.730] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"} [2026-07-09 13:11:01.747] [DEBUG] QUERY OK db=17.3ms queue=0.1ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "UNKNOWN", "sim_number", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401023, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.748] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"} [2026-07-09 13:11:01.777] [DEBUG] QUERY OK db=28.0ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "UNKNOWN", "sim_iccid", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401024, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.777] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"} [2026-07-09 13:11:01.808] [DEBUG] QUERY OK db=30.6ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "UNKNOWN", "sim_imsi", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401025, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.809] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"} [2026-07-09 13:11:01.842] [DEBUG] QUERY OK db=33.4ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "UNKNOWN", "sim_iccid2", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401026, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.843] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:13:59Z", "value" => "UNKNOWN"} [2026-07-09 13:11:01.863] [DEBUG] QUERY OK db=20.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "UNKNOWN", "sim_imsi2", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401027, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.864] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "11"} [2026-07-09 13:11:01.898] [DEBUG] QUERY OK db=30.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "11", "data_usage_mb", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401028, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.899] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:13:59Z", "value" => "0"} [2026-07-09 13:11:01.930] [DEBUG] QUERY OK db=30.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13:59Z", "0", "mobile_data_mb", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:01.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401029, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:01.933] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:11:02.001] [DEBUG] QUERY OK db=67.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:13: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46807, ~N[2026-07-09 13:11:01], ~N[2026-07-09 13:11:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401030, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:13:59Z", message: nil, status_log_id: 46807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:01], updated_at: ~N[2026-07-09 13:11:01]}} [2026-07-09 13:11:02.004] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:11:02.004] [INFO ] Incoming JSON payload: {"oid":"1bc8eb82-a26b-4c5f-bde6-303a1e1b3944","sn":"98250904730001","uploadTime":"2026-07-09T13:10:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:10:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:11:02.007] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1bc8eb82-a26b-4c5f-bde6-303a1e1b3944", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:10:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:10:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:10:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:10:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:10:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:10:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:10:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:10:51Z", "vendor" => "morefun"} [2026-07-09 13:11:02.007] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:11:02.007] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:11:02.008] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:11:02.011] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=80.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-07-09 13:11:02.012] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=10.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-07-09 13:11:02.012] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:11:02.012] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:11:02.013] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:11:02.042] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:11:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:11:02.042] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:11:02.043] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:11:02.091] [DEBUG] QUERY OK source="tms_terminals" db=46.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:11:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:11:02.112] [DEBUG] QUERY OK db=20.7ms idle=47.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "1bc8eb82-a26b-4c5f-bde6-303a1e1b3944", "2026-07-09T13:10:51Z", ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:11:02.112] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46808, oid: "1bc8eb82-a26b-4c5f-bde6-303a1e1b3944", upload_time: "2026-07-09T13:10:51Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]} [2026-07-09 13:11:02.112] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:10:51Z", "value" => "morefun"} [2026-07-09 13:11:02.152] [DEBUG] QUERY OK db=39.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "morefun", "vendor", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401031, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.152] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:10:51Z", "value" => "kiosk_launcher"} [2026-07-09 13:11:02.184] [DEBUG] QUERY OK db=31.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "kiosk_launcher", "model", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401032, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.185] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:10:51Z", "value" => "1.0"} [2026-07-09 13:11:02.268] [DEBUG] QUERY OK db=83.0ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "1.0", "app_version", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401033, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.269] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:10:51Z", "value" => "13"} [2026-07-09 13:11:02.284] [DEBUG] QUERY OK db=15.3ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "13", "android_version", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401034, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.285] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "1083"} [2026-07-09 13:11:02.306] [DEBUG] QUERY OK db=20.9ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "1083", "ram_free_mb", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401035, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.306] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:10:51Z", "value" => "WIFI"} [2026-07-09 13:11:02.341] [DEBUG] QUERY OK db=34.9ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "WIFI", "network_type", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401036, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.342] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:10:51Z", "value" => "true"} [2026-07-09 13:11:02.381] [DEBUG] QUERY OK db=37.0ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "true", "kiosk_active", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401037, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:10:51Z", "value" => ""} [2026-07-09 13:11:02.395] [DEBUG] QUERY OK db=13.4ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:10:51Z", "sim_operator", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401038, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.396] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"} [2026-07-09 13:11:02.411] [DEBUG] QUERY OK db=14.9ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "UNKNOWN", "sim_number", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401039, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.411] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"} [2026-07-09 13:11:02.449] [DEBUG] QUERY OK db=35.0ms queue=0.4ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "UNKNOWN", "sim_iccid", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401040, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.449] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"} [2026-07-09 13:11:02.480] [DEBUG] QUERY OK db=30.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "UNKNOWN", "sim_imsi", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401041, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.480] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"} [2026-07-09 13:11:02.505] [DEBUG] QUERY OK db=23.1ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "UNKNOWN", "sim_iccid2", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401042, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.507] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:10:51Z", "value" => "UNKNOWN"} [2026-07-09 13:11:02.530] [DEBUG] QUERY OK db=22.0ms queue=0.7ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "UNKNOWN", "sim_imsi2", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401043, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.532] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "28"} [2026-07-09 13:11:02.565] [DEBUG] QUERY OK db=32.2ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "28", "data_usage_mb", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401044, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.567] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:10:51Z", "value" => "0"} [2026-07-09 13:11:02.600] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:10:51Z", "0", "mobile_data_mb", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401045, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:02.603] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:11:02.622] [DEBUG] QUERY OK db=16.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-07-09T13:10: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46808, ~N[2026-07-09 13:11:02], ~N[2026-07-09 13:11:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:02.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401046, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:10:51Z", message: nil, status_log_id: 46808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:02], updated_at: ~N[2026-07-09 13:11:02]}} [2026-07-09 13:11:10.113] [INFO ] Running offline device check... [2026-07-09 13:11:15.114] [INFO ] Starting offline device check... [2026-07-09 13:11:20.116] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=906.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:747 [2026-07-09 13:11:21.483] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:11:25.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms idle=773.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:11:26.484] [INFO ] Incoming JSON payload: {"oid":"7e125936-0530-4db4-b77f-f1a0bdede4da","sn":"98251226730001","uploadTime":"2026-07-09T21:14:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"ram_free_mb","value":"905","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:14:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:11:30.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms idle=1191.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:11:31.487] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7e125936-0530-4db4-b77f-f1a0bdede4da", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:14:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:14:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:14:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:14:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "905"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:14:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:14:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:14:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:14:29Z", "vendor" => "morefun"} [2026-07-09 13:11:35.636] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:11:35.636] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:11:35.636] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:11:35.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=767.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:11:35.638] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=497.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-07-09 13:11:35.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=264.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:11:35.639] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=0.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-07-09 13:11:35.640] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:11:35.640] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.640] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:11:35.641] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:11:35.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.645] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.647] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.649] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.656] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.665] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:11:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:11:35.665] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:11:35.666] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:11:35.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.4ms 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:762 [2026-07-09 13:11:35.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.678] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.682] [DEBUG] QUERY OK source="tms_terminals" db=15.4ms queue=0.1ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:11:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:11:35.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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:762 [2026-07-09 13:11:35.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.710] [DEBUG] QUERY OK db=27.3ms idle=0.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7e125936-0530-4db4-b77f-f1a0bdede4da", "2026-07-09T21:14:29Z", ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:11:35.710] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46809, oid: "7e125936-0530-4db4-b77f-f1a0bdede4da", upload_time: "2026-07-09T21:14:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]} [2026-07-09 13:11:35.710] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:14:29Z", "value" => "morefun"} [2026-07-09 13:11:35.712] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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:762 [2026-07-09 13:11:35.736] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.744] [DEBUG] QUERY OK db=33.6ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "morefun", "vendor", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401047, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.744] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:14:29Z", "value" => "kiosk_launcher"} [2026-07-09 13:11:35.746] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.747] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.748] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.749] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.751] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.754] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.756] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.758] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.759] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:11:35.759] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 13:11:35.759] [INFO ] Offline device check completed successfully [2026-07-09 13:11:35.776] [DEBUG] QUERY OK db=31.6ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "kiosk_launcher", "model", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401048, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.777] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:14:29Z", "value" => "1.0"} [2026-07-09 13:11:35.791] [DEBUG] QUERY OK db=13.3ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "1.0", "app_version", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401049, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.791] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:14:29Z", "value" => "13"} [2026-07-09 13:11:35.814] [DEBUG] QUERY OK db=22.5ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "13", "android_version", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401050, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.814] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "905"} [2026-07-09 13:11:35.838] [DEBUG] QUERY OK db=23.4ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "905", "ram_free_mb", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401051, itemkey: "ram_free_mb", value: "905", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.838] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:14:29Z", "value" => "WIFI"} [2026-07-09 13:11:35.871] [DEBUG] QUERY OK db=32.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "WIFI", "network_type", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401052, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.871] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:14:29Z", "value" => "true"} [2026-07-09 13:11:35.894] [DEBUG] QUERY OK db=21.8ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "true", "kiosk_active", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401053, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.894] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:14:29Z", "value" => ""} [2026-07-09 13:11:35.908] [DEBUG] QUERY OK db=13.8ms queue=0.1ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:14:29Z", "sim_operator", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401054, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.909] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"} [2026-07-09 13:11:35.931] [DEBUG] QUERY OK db=21.6ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "UNKNOWN", "sim_number", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401055, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.931] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"} [2026-07-09 13:11:35.956] [DEBUG] QUERY OK db=24.3ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "UNKNOWN", "sim_iccid", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401056, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.958] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"} [2026-07-09 13:11:35.982] [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-07-09T21:14:29Z", "UNKNOWN", "sim_imsi", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:35.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401057, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:35.983] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.017] [DEBUG] QUERY OK db=33.3ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "UNKNOWN", "sim_iccid2", 46809, ~N[2026-07-09 13:11:35], ~N[2026-07-09 13:11:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401058, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:35], updated_at: ~N[2026-07-09 13:11:35]}} [2026-07-09 13:11:36.017] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:14:29Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.036] [DEBUG] QUERY OK db=17.7ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "UNKNOWN", "sim_imsi2", 46809, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401059, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.036] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "11"} [2026-07-09 13:11:36.077] [DEBUG] QUERY OK db=40.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "11", "data_usage_mb", 46809, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401060, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.078] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:14:29Z", "value" => "0"} [2026-07-09 13:11:36.102] [DEBUG] QUERY OK db=24.5ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:29Z", "0", "mobile_data_mb", 46809, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401061, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.104] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:11:36.129] [DEBUG] QUERY OK db=24.3ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46809, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401062, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:14:29Z", message: nil, status_log_id: 46809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.130] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:11:36.130] [INFO ] Incoming JSON payload: {"oid":"7dfca127-608f-48a0-a01c-be70cde2eaea","sn":"98250904730001","uploadTime":"2026-07-09T13:11:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:11:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:11:36.131] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7dfca127-608f-48a0-a01c-be70cde2eaea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:11:21Z", "vendor" => "morefun"} [2026-07-09 13:11:36.131] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:11:36.131] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:11:36.133] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:11:36.134] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=31.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-07-09 13:11:36.135] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=5.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-07-09 13:11:36.135] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:11:36.137] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:11:36.137] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:11:36.160] [DEBUG] QUERY OK source="tms_terminals" db=21.7ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:11:36], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:11:36.160] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:11:36.161] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=22.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:11:36.184] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:11:36], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:11:36.222] [DEBUG] QUERY OK db=34.4ms queue=2.4ms idle=23.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "7dfca127-608f-48a0-a01c-be70cde2eaea", "2026-07-09T13:11:21Z", ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:11:36.222] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46810, oid: "7dfca127-608f-48a0-a01c-be70cde2eaea", upload_time: "2026-07-09T13:11:21Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]} [2026-07-09 13:11:36.222] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:21Z", "value" => "morefun"} [2026-07-09 13:11:36.243] [DEBUG] QUERY OK db=20.0ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "morefun", "vendor", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401063, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.243] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:21Z", "value" => "kiosk_launcher"} [2026-07-09 13:11:36.261] [DEBUG] QUERY OK db=17.9ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "kiosk_launcher", "model", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401064, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.262] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:21Z", "value" => "1.0"} [2026-07-09 13:11:36.285] [DEBUG] QUERY OK db=22.5ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "1.0", "app_version", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401065, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.286] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:21Z", "value" => "13"} [2026-07-09 13:11:36.309] [DEBUG] QUERY OK db=23.2ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "13", "android_version", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401066, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.310] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "1079"} [2026-07-09 13:11:36.343] [DEBUG] QUERY OK db=31.9ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "1079", "ram_free_mb", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401067, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.343] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:21Z", "value" => "WIFI"} [2026-07-09 13:11:36.361] [DEBUG] QUERY OK db=17.0ms queue=0.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "WIFI", "network_type", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401068, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.361] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:21Z", "value" => "true"} [2026-07-09 13:11:36.382] [DEBUG] QUERY OK db=20.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "true", "kiosk_active", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401069, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.383] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:21Z", "value" => ""} [2026-07-09 13:11:36.405] [DEBUG] QUERY OK db=22.1ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:11:21Z", "sim_operator", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401070, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.406] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.428] [DEBUG] QUERY OK db=22.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "UNKNOWN", "sim_number", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401071, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.429] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.451] [DEBUG] QUERY OK db=21.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "UNKNOWN", "sim_iccid", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401072, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.451] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.468] [DEBUG] QUERY OK db=16.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "UNKNOWN", "sim_imsi", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401073, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.469] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.484] [DEBUG] QUERY OK db=14.8ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "UNKNOWN", "sim_iccid2", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401074, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.484] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:21Z", "value" => "UNKNOWN"} [2026-07-09 13:11:36.510] [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-07-09T13:11:21Z", "UNKNOWN", "sim_imsi2", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401075, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.510] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "28"} [2026-07-09 13:11:36.535] [DEBUG] QUERY OK db=23.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "28", "data_usage_mb", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401076, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.535] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:21Z", "value" => "0"} [2026-07-09 13:11:36.568] [DEBUG] QUERY OK db=32.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:21Z", "0", "mobile_data_mb", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401077, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:36.570] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:11:36.585] [DEBUG] QUERY OK db=14.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46810, ~N[2026-07-09 13:11:36], ~N[2026-07-09 13:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:11:36.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401078, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:11:21Z", message: nil, status_log_id: 46810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:11:36], updated_at: ~N[2026-07-09 13:11:36]}} [2026-07-09 13:11:51.607] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:11:56.608] [INFO ] Incoming JSON payload: {"oid":"e9970fbb-8e68-41db-ad15-adbd56ce4c9f","sn":"98251226730001","uploadTime":"2026-07-09T21:14:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"ram_free_mb","value":"904","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:14:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:12:01.610] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e9970fbb-8e68-41db-ad15-adbd56ce4c9f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:14:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:14:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:14:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:14:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "904"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:14:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:14:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:14:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:14:59Z", "vendor" => "morefun"} [2026-07-09 13:12:06.611] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:12:11.612] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:12:15.649] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:12:15.650] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1110.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-07-09 13:12:15.653] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=109.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-07-09 13:12:15.653] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:12:15.655] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:12:15.655] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:12:15.680] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:12:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:12:15.680] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:12:15.681] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:12:15.719] [DEBUG] QUERY OK source="tms_terminals" db=37.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:12:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:12:15.752] [DEBUG] QUERY OK db=32.7ms queue=0.2ms idle=38.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e9970fbb-8e68-41db-ad15-adbd56ce4c9f", "2026-07-09T21:14:59Z", ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:12:15.753] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46811, oid: "e9970fbb-8e68-41db-ad15-adbd56ce4c9f", upload_time: "2026-07-09T21:14:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]} [2026-07-09 13:12:15.753] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:14:59Z", "value" => "morefun"} [2026-07-09 13:12:15.773] [DEBUG] QUERY OK db=19.3ms queue=0.2ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "morefun", "vendor", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401079, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.773] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:14:59Z", "value" => "kiosk_launcher"} [2026-07-09 13:12:15.802] [DEBUG] QUERY OK db=28.2ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "kiosk_launcher", "model", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401080, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.802] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:14:59Z", "value" => "1.0"} [2026-07-09 13:12:15.835] [DEBUG] QUERY OK db=33.0ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "1.0", "app_version", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401081, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.836] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:14:59Z", "value" => "13"} [2026-07-09 13:12:15.868] [DEBUG] QUERY OK db=31.8ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "13", "android_version", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401082, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.869] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "904"} [2026-07-09 13:12:15.884] [DEBUG] QUERY OK db=15.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "904", "ram_free_mb", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401083, itemkey: "ram_free_mb", value: "904", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.884] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:14:59Z", "value" => "WIFI"} [2026-07-09 13:12:15.905] [DEBUG] QUERY OK db=20.2ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "WIFI", "network_type", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401084, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.906] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:14:59Z", "value" => "true"} [2026-07-09 13:12:15.942] [DEBUG] QUERY OK db=33.2ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "true", "kiosk_active", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401085, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.942] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:14:59Z", "value" => ""} [2026-07-09 13:12:15.966] [DEBUG] QUERY OK db=23.9ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:14:59Z", "sim_operator", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401086, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.967] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"} [2026-07-09 13:12:15.996] [DEBUG] QUERY OK db=29.1ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "UNKNOWN", "sim_number", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:15.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401087, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:15.997] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.018] [DEBUG] QUERY OK db=20.4ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "UNKNOWN", "sim_iccid", 46811, ~N[2026-07-09 13:12:15], ~N[2026-07-09 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401088, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:15], updated_at: ~N[2026-07-09 13:12:15]}} [2026-07-09 13:12:16.019] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.055] [DEBUG] QUERY OK db=36.2ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "UNKNOWN", "sim_imsi", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401089, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.109] [DEBUG] QUERY OK db=53.3ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "UNKNOWN", "sim_iccid2", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401090, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.111] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:14:59Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.174] [DEBUG] QUERY OK db=61.8ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "UNKNOWN", "sim_imsi2", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401091, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.175] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "11"} [2026-07-09 13:12:16.230] [DEBUG] QUERY OK db=54.5ms queue=0.2ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "11", "data_usage_mb", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401092, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.231] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:14:59Z", "value" => "0"} [2026-07-09 13:12:16.311] [DEBUG] QUERY OK db=80.1ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14:59Z", "0", "mobile_data_mb", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401093, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.312] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:12:16.364] [DEBUG] QUERY OK db=51.4ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:14: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46811, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401094, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:14:59Z", message: nil, status_log_id: 46811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.365] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:12:16.366] [INFO ] Incoming JSON payload: {"oid":"1a01b000-0672-47c2-8c49-09282127fc55","sn":"98250904730001","uploadTime":"2026-07-09T13:11:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"ram_free_mb","value":"1088","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:12:16.369] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1a01b000-0672-47c2-8c49-09282127fc55", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1088"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:11:51Z", "vendor" => "morefun"} [2026-07-09 13:12:16.370] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:12:16.370] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:12:16.370] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:12:16.371] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=59.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-07-09 13:12:16.373] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=8.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:12:16.373] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:12:16.374] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:12:16.374] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:12:16.404] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:12:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:12:16.405] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:12:16.406] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:12:16.434] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:12:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:12:16.462] [DEBUG] QUERY OK db=27.4ms idle=28.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "1a01b000-0672-47c2-8c49-09282127fc55", "2026-07-09T13:11:51Z", ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:12:16.462] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46812, oid: "1a01b000-0672-47c2-8c49-09282127fc55", upload_time: "2026-07-09T13:11:51Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]} [2026-07-09 13:12:16.463] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:51Z", "value" => "morefun"} [2026-07-09 13:12:16.488] [DEBUG] QUERY OK db=24.7ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "morefun", "vendor", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401095, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.488] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:51Z", "value" => "kiosk_launcher"} [2026-07-09 13:12:16.522] [DEBUG] QUERY OK db=33.5ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "kiosk_launcher", "model", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401096, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.522] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1.0"} [2026-07-09 13:12:16.547] [DEBUG] QUERY OK db=24.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "1.0", "app_version", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401097, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.547] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "13"} [2026-07-09 13:12:16.561] [DEBUG] QUERY OK db=12.3ms queue=0.7ms idle=4.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "13", "android_version", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401098, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.561] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1088"} [2026-07-09 13:12:16.585] [DEBUG] QUERY OK db=24.0ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "1088", "ram_free_mb", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401099, itemkey: "ram_free_mb", value: "1088", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.586] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:51Z", "value" => "WIFI"} [2026-07-09 13:12:16.622] [DEBUG] QUERY OK db=35.0ms queue=0.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "WIFI", "network_type", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401100, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.622] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:51Z", "value" => "true"} [2026-07-09 13:12:16.654] [DEBUG] QUERY OK db=31.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "true", "kiosk_active", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401101, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.655] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:51Z", "value" => ""} [2026-07-09 13:12:16.681] [DEBUG] QUERY OK db=25.7ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:11:51Z", "sim_operator", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401102, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.681] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.703] [DEBUG] QUERY OK db=21.4ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_number", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401103, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.703] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.728] [DEBUG] QUERY OK db=23.9ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_iccid", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401104, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.728] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.763] [DEBUG] QUERY OK db=34.8ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_imsi", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401105, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.764] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.789] [DEBUG] QUERY OK db=24.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_iccid2", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401106, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:16.808] [DEBUG] QUERY OK db=19.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_imsi2", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401107, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.809] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "28"} [2026-07-09 13:12:16.838] [DEBUG] QUERY OK db=28.4ms queue=0.7ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "28", "data_usage_mb", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401108, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.839] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "0"} [2026-07-09 13:12:16.871] [DEBUG] QUERY OK db=31.9ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "0", "mobile_data_mb", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401109, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.872] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:12:16.898] [DEBUG] QUERY OK db=24.4ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46812, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:16.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401110, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:16.899] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:12:16.900] [INFO ] Incoming JSON payload: {"oid":"1a01b000-0672-47c2-8c49-09282127fc55","sn":"98250904730001","uploadTime":"2026-07-09T13:11:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"ram_free_mb","value":"1088","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:11:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:12:16.901] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1a01b000-0672-47c2-8c49-09282127fc55", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1088"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:11:51Z", "vendor" => "morefun"} [2026-07-09 13:12:16.902] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:12:16.902] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:12:16.902] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:12:16.903] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=31.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:12:16.904] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=6.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-07-09 13:12:16.904] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:12:16.905] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:12:16.905] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:12:16.932] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:12:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:12:16.932] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:12:16.934] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:12:16.961] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms queue=0.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:12:16], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:12:16.984] [DEBUG] QUERY OK db=23.2ms idle=27.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "1a01b000-0672-47c2-8c49-09282127fc55", "2026-07-09T13:11:51Z", ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:12:16.984] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46813, oid: "1a01b000-0672-47c2-8c49-09282127fc55", upload_time: "2026-07-09T13:11:51Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]} [2026-07-09 13:12:16.985] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:11:51Z", "value" => "morefun"} [2026-07-09 13:12:17.023] [DEBUG] QUERY OK db=36.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "morefun", "vendor", 46813, ~N[2026-07-09 13:12:16], ~N[2026-07-09 13:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401111, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:16], updated_at: ~N[2026-07-09 13:12:16]}} [2026-07-09 13:12:17.023] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:11:51Z", "value" => "kiosk_launcher"} [2026-07-09 13:12:17.054] [DEBUG] QUERY OK db=30.1ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "kiosk_launcher", "model", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401112, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.054] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1.0"} [2026-07-09 13:12:17.107] [DEBUG] QUERY OK db=52.7ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "1.0", "app_version", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401113, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.108] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:11:51Z", "value" => "13"} [2026-07-09 13:12:17.188] [DEBUG] QUERY OK db=80.2ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "13", "android_version", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401114, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.188] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "1088"} [2026-07-09 13:12:17.223] [DEBUG] QUERY OK db=33.9ms idle=81.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "1088", "ram_free_mb", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401115, itemkey: "ram_free_mb", value: "1088", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.223] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:11:51Z", "value" => "WIFI"} [2026-07-09 13:12:17.257] [DEBUG] QUERY OK db=33.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "WIFI", "network_type", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401116, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.258] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:11:51Z", "value" => "true"} [2026-07-09 13:12:17.276] [DEBUG] QUERY OK db=17.1ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "true", "kiosk_active", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401117, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.276] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:11:51Z", "value" => ""} [2026-07-09 13:12:17.311] [DEBUG] QUERY OK db=34.4ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:11:51Z", "sim_operator", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401118, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.311] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:17.337] [DEBUG] QUERY OK db=25.3ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_number", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401119, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.338] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:17.361] [DEBUG] QUERY OK db=22.6ms queue=0.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_iccid", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401120, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.362] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:17.375] [DEBUG] QUERY OK db=12.6ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_imsi", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401121, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.375] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:17.402] [DEBUG] QUERY OK db=26.2ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_iccid2", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401122, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.402] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:11:51Z", "value" => "UNKNOWN"} [2026-07-09 13:12:17.428] [DEBUG] QUERY OK db=25.0ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "UNKNOWN", "sim_imsi2", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401123, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.428] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "28"} [2026-07-09 13:12:17.452] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "28", "data_usage_mb", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401124, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.453] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:11:51Z", "value" => "0"} [2026-07-09 13:12:17.472] [DEBUG] QUERY OK db=19.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11:51Z", "0", "mobile_data_mb", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401125, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:17.473] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:12:17.493] [DEBUG] QUERY OK db=18.3ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:11: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46813, ~N[2026-07-09 13:12:17], ~N[2026-07-09 13:12:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:12:17.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401126, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:11:51Z", message: nil, status_log_id: 46813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:12:17], updated_at: ~N[2026-07-09 13:12:17]}} [2026-07-09 13:12:21.716] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:12:26.717] [INFO ] Incoming JSON payload: {"oid":"5d556ca3-af81-420a-bcae-55738a4e73c0","sn":"98251226730001","uploadTime":"2026-07-09T21:15:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"ram_free_mb","value":"906","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:15:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:12:31.721] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5d556ca3-af81-420a-bcae-55738a4e73c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:15:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:15:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:15:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:15:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "906"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:15:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:15:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:15:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:15:29Z", "vendor" => "morefun"} [2026-07-09 13:12:36.723] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:12:41.724] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:12:46.725] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:12:51.727] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=781.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-07-09 13:12:56.729] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=783.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-07-09 13:13:01.730] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:01.734] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=758.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-07-09 13:13:01.734] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:13:01.753] [DEBUG] QUERY OK source="tms_terminals" db=18.4ms queue=0.2ms idle=50.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:01.753] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:13:01.756] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:01.785] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:01.814] [DEBUG] QUERY OK db=27.7ms idle=29.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5d556ca3-af81-420a-bcae-55738a4e73c0", "2026-07-09T21:15:29Z", ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:01.814] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46814, oid: "5d556ca3-af81-420a-bcae-55738a4e73c0", upload_time: "2026-07-09T21:15:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]} [2026-07-09 13:13:01.814] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:15:29Z", "value" => "morefun"} [2026-07-09 13:13:01.843] [DEBUG] QUERY OK db=28.7ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "morefun", "vendor", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401127, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.844] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:15:29Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:01.868] [DEBUG] QUERY OK db=24.5ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "kiosk_launcher", "model", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401128, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.869] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:15:29Z", "value" => "1.0"} [2026-07-09 13:13:01.894] [DEBUG] QUERY OK db=25.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "1.0", "app_version", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401129, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.894] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:15:29Z", "value" => "13"} [2026-07-09 13:13:01.919] [DEBUG] QUERY OK db=24.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "13", "android_version", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401130, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.920] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "906"} [2026-07-09 13:13:01.956] [DEBUG] QUERY OK db=33.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "906", "ram_free_mb", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401131, itemkey: "ram_free_mb", value: "906", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.956] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:15:29Z", "value" => "WIFI"} [2026-07-09 13:13:01.979] [DEBUG] QUERY OK db=22.5ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "WIFI", "network_type", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:01.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401132, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:01.980] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:15:29Z", "value" => "true"} [2026-07-09 13:13:02.002] [DEBUG] QUERY OK db=22.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "true", "kiosk_active", 46814, ~N[2026-07-09 13:13:01], ~N[2026-07-09 13:13:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401133, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:01], updated_at: ~N[2026-07-09 13:13:01]}} [2026-07-09 13:13:02.003] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:15:29Z", "value" => ""} [2026-07-09 13:13:02.031] [DEBUG] QUERY OK db=28.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:15:29Z", "sim_operator", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401134, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.032] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.073] [DEBUG] QUERY OK db=40.0ms queue=0.8ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "UNKNOWN", "sim_number", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401135, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.073] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.104] [DEBUG] QUERY OK db=30.0ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "UNKNOWN", "sim_iccid", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401136, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.111] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.174] [DEBUG] QUERY OK db=63.1ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "UNKNOWN", "sim_imsi", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401137, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.174] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.208] [DEBUG] QUERY OK db=32.6ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "UNKNOWN", "sim_iccid2", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401138, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.208] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:15:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.235] [DEBUG] QUERY OK db=26.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "UNKNOWN", "sim_imsi2", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401139, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.235] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "11"} [2026-07-09 13:13:02.259] [DEBUG] QUERY OK db=23.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "11", "data_usage_mb", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401140, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.260] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:15:29Z", "value" => "0"} [2026-07-09 13:13:02.281] [DEBUG] QUERY OK db=21.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:29Z", "0", "mobile_data_mb", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401141, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.282] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:13:02.335] [DEBUG] QUERY OK db=50.5ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46814, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401142, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:15:29Z", message: nil, status_log_id: 46814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.341] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:02.341] [INFO ] Incoming JSON payload: {"oid":"cebbe57e-b326-42b8-abbd-582cfbb8a82c","sn":"98250904730001","uploadTime":"2026-07-09T13:12:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"ram_free_mb","value":"1084","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:02.344] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:12:21Z", "vendor" => "morefun"} [2026-07-09 13:13:02.344] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:02.344] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:02.344] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:02.349] [DEBUG] QUERY OK source="parameter_templates" db=4.7ms idle=63.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-07-09 13:13:02.351] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=16.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-07-09 13:13:02.351] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:02.352] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:02.353] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:02.382] [DEBUG] QUERY OK source="tms_terminals" db=28.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:02.382] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:02.383] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:02.400] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:02.420] [DEBUG] QUERY OK db=19.4ms idle=17.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "2026-07-09T13:12:21Z", ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:02.420] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46815, oid: "cebbe57e-b326-42b8-abbd-582cfbb8a82c", upload_time: "2026-07-09T13:12:21Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]} [2026-07-09 13:13:02.420] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"} [2026-07-09 13:13:02.445] [DEBUG] QUERY OK db=24.2ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "morefun", "vendor", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401143, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.445] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:02.480] [DEBUG] QUERY OK db=34.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "kiosk_launcher", "model", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401144, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.480] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"} [2026-07-09 13:13:02.500] [DEBUG] QUERY OK db=19.4ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1.0", "app_version", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401145, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.501] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"} [2026-07-09 13:13:02.518] [DEBUG] QUERY OK db=16.8ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "13", "android_version", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401146, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.518] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"} [2026-07-09 13:13:02.550] [DEBUG] QUERY OK db=31.6ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1084", "ram_free_mb", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401147, itemkey: "ram_free_mb", value: "1084", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.551] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"} [2026-07-09 13:13:02.586] [DEBUG] QUERY OK db=35.2ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "WIFI", "network_type", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401148, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.587] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"} [2026-07-09 13:13:02.608] [DEBUG] QUERY OK db=21.1ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "true", "kiosk_active", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401149, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.610] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""} [2026-07-09 13:13:02.625] [DEBUG] QUERY OK db=14.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:12:21Z", "sim_operator", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401150, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.625] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.655] [DEBUG] QUERY OK db=29.4ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_number", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401151, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.656] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.688] [DEBUG] QUERY OK db=32.2ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401152, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.688] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.717] [DEBUG] QUERY OK db=28.5ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401153, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.718] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.738] [DEBUG] QUERY OK db=20.0ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid2", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401154, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.739] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:02.788] [DEBUG] QUERY OK db=49.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi2", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401155, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.788] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"} [2026-07-09 13:13:02.811] [DEBUG] QUERY OK db=22.4ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "28", "data_usage_mb", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401156, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.812] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"} [2026-07-09 13:13:02.830] [DEBUG] QUERY OK db=17.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "0", "mobile_data_mb", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401157, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.831] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:02.867] [DEBUG] QUERY OK db=32.6ms queue=0.1ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46815, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:02.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401158, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:02.869] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:02.872] [INFO ] Incoming JSON payload: {"oid":"cebbe57e-b326-42b8-abbd-582cfbb8a82c","sn":"98250904730001","uploadTime":"2026-07-09T13:12:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"ram_free_mb","value":"1084","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:02.873] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:12:21Z", "vendor" => "morefun"} [2026-07-09 13:13:02.873] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:02.873] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:02.873] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:02.874] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=43.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-07-09 13:13:02.875] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=8.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-07-09 13:13:02.875] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:02.879] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:02.879] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:02.911] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:02.911] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:02.915] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=34.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:02.948] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:02], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:02.971] [DEBUG] QUERY OK db=22.5ms idle=33.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "2026-07-09T13:12:21Z", ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:02.971] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46816, oid: "cebbe57e-b326-42b8-abbd-582cfbb8a82c", upload_time: "2026-07-09T13:12:21Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]} [2026-07-09 13:13:02.971] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"} [2026-07-09 13:13:02.999] [DEBUG] QUERY OK db=27.4ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "morefun", "vendor", 46816, ~N[2026-07-09 13:13:02], ~N[2026-07-09 13:13:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401159, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:02], updated_at: ~N[2026-07-09 13:13:02]}} [2026-07-09 13:13:03.000] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:03.033] [DEBUG] QUERY OK db=32.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "kiosk_launcher", "model", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401160, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.033] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"} [2026-07-09 13:13:03.062] [DEBUG] QUERY OK db=28.6ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1.0", "app_version", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401161, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.063] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"} [2026-07-09 13:13:03.081] [DEBUG] QUERY OK db=17.8ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "13", "android_version", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401162, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.081] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"} [2026-07-09 13:13:03.106] [DEBUG] QUERY OK db=24.8ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1084", "ram_free_mb", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401163, itemkey: "ram_free_mb", value: "1084", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.109] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"} [2026-07-09 13:13:03.145] [DEBUG] QUERY OK db=36.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "WIFI", "network_type", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401164, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.146] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"} [2026-07-09 13:13:03.176] [DEBUG] QUERY OK db=30.5ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "true", "kiosk_active", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401165, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.177] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""} [2026-07-09 13:13:03.196] [DEBUG] QUERY OK db=19.3ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:12:21Z", "sim_operator", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401166, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.197] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:03.223] [DEBUG] QUERY OK db=25.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_number", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401167, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.223] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:03.252] [DEBUG] QUERY OK db=28.9ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401168, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.255] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:03.295] [DEBUG] QUERY OK db=39.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401169, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.295] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:03.321] [DEBUG] QUERY OK db=25.4ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid2", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401170, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.323] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:03.361] [DEBUG] QUERY OK db=37.3ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi2", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401171, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.363] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"} [2026-07-09 13:13:03.398] [DEBUG] QUERY OK db=33.9ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "28", "data_usage_mb", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401172, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.399] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"} [2026-07-09 13:13:03.422] [DEBUG] QUERY OK db=22.1ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "0", "mobile_data_mb", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401173, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.426] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:03.453] [DEBUG] QUERY OK db=25.2ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46816, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401174, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.454] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 13:13:03.455] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T13:12:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T13:12:49Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T13:12:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T13:12:49Z","value":"2"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T13:12:49Z","value":"65"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":"1.0.0"},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":"1.0.0"},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T13:12:49Z","vendor":"softpos"} [2026-07-09 13:13:03.455] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:12:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:12:49Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:12:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:12:49Z", "value" => "2"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:12:49Z", "value" => "65"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T13:12:49Z", "vendor" => "softpos"} [2026-07-09 13:13:03.455] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "1.0.0", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:13:03.455] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 13:13:03.455] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 13:13:03.462] [DEBUG] QUERY OK source="parameter_templates" db=6.0ms idle=33.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:13:03.465] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=12.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 13:13:03.467] [DEBUG] QUERY OK source="parameter_template_values" db=1.7ms idle=4.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 13:13:03.472] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=0.9ms 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-07-09 13:13:03.474] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=6.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 13:13:03.513] [DEBUG] QUERY OK source="pos_merchant" db=38.9ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:13:03.516] [DEBUG] QUERY OK db=1.4ms queue=1.2ms idle=1552.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 ["513940210000000"] [2026-07-09 13:13:03.518] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 13:13:03.519] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms 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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:13:03.520] [DEBUG] QUERY OK source="address" db=0.3ms idle=6.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:13:03.520] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 13:13:03.523] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 13:13:03.553] [DEBUG] QUERY OK db=24.0ms idle=9.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", "6b8a537e63d5ec31a38f92c4ed988f157b3f7ad2695289a55fe75ae6d33697cc", 2948, 969, ~U[2026-07-09 13:13:03Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:13:03.553] [INFO ] AutoPushService: Created push log 33413 for MF919 params.zip [2026-07-09 13:13:03.553] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 2948, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:13:03.553] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:13:03.554] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 13:13:03.555] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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 ["emv_config", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 13:13:03.563] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 13:13:03.591] [DEBUG] QUERY OK db=27.0ms idle=11.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", "5d9726de20b7003ecae628dff73ca378ef9fb8e9d6006bfc2a0f10371cf917cf", 3044, 2334, ~U[2026-07-09 13:13:03Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:13:03.592] [INFO ] AutoPushService: Created push log 33414 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 13:13:03.592] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 3044, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:13:03.593] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:13:03.594] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 13:13:03.600] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=42.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 13:13:03.601] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 13:13:03.602] [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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:13:03.603] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 13:13:03.604] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:13:03.604] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:13:03.605] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:13:03.605] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 13:13:03.605] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 13:13:03.610] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms 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` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:03.611] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 13:13:03.629] [DEBUG] QUERY OK source="tms_terminals" db=15.5ms queue=0.3ms idle=11.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:03], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:03.634] [DEBUG] QUERY OK source="parameter_templates" db=4.5ms 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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-09 13:13:03.636] [DEBUG] QUERY OK source="config_file_versions" db=1.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 ["emv_config", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-09 13:13:03.637] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 13:13:03.644] [DEBUG] QUERY OK source="tms_terminals" db=6.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:03.671] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:03], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:03.707] [DEBUG] QUERY OK db=35.1ms idle=27.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T13:12:49Z", ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:03.707] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46817, oid: "organization_id", upload_time: "2026-07-09T13:12:49Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]} [2026-07-09 13:13:03.707] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:12:49Z", "value" => "online"} [2026-07-09 13:13:03.732] [DEBUG] QUERY OK db=24.1ms 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-07-09T13:12:49Z", "online", "status", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401175, itemkey: "status", value: "online", timestamp: "2026-07-09T13:12:49Z", message: "Terminal status update", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.732] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 13:13:03.732] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:12:49Z", "value" => "100"} [2026-07-09 13:13:03.758] [DEBUG] QUERY OK db=25.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-07-09T13:12:49Z", "100", "battery", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401176, itemkey: "battery", value: "100", timestamp: "2026-07-09T13:12:49Z", message: "Battery level", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.759] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:12:49Z", "value" => "online"} [2026-07-09 13:13:03.807] [DEBUG] QUERY OK db=46.2ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T13:12:49Z", "online", "network", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401177, itemkey: "network", value: "online", timestamp: "2026-07-09T13:12:49Z", message: "Network connectivity", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.808] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 13:13:03.810] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:12:49Z", "value" => "2"} [2026-07-09 13:13:03.835] [DEBUG] QUERY OK db=25.2ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-09T13:12:49Z", "2", "cpu", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401178, itemkey: "cpu", value: "2", timestamp: "2026-07-09T13:12:49Z", message: "CPU usage percentage", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.836] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:12:49Z", "value" => "65"} [2026-07-09 13:13:03.870] [DEBUG] QUERY OK db=33.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T13:12:49Z", "65", "memory", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401179, itemkey: "memory", value: "65", timestamp: "2026-07-09T13:12:49Z", message: "Memory usage percentage", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.870] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:13:03.946] [DEBUG] QUERY OK db=29.6ms queue=45.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["EMV Config", "1.0.0", "emv_config", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:03.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401180, itemkey: "emv_config", value: "1.0.0", timestamp: nil, message: "EMV Config", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:03.946] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:13:04.015] [DEBUG] QUERY OK db=25.5ms queue=43.1ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Parameter config", "1.0.0", "parameter_config", 46817, ~N[2026-07-09 13:13:03], ~N[2026-07-09 13:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401181, itemkey: "parameter_config", value: "1.0.0", timestamp: nil, message: "Parameter config", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:03], updated_at: ~N[2026-07-09 13:13:03]}} [2026-07-09 13:13:04.016] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 13:13:04.078] [DEBUG] QUERY OK db=19.1ms queue=42.4ms idle=70.1ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46817, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401182, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.078] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 13:13:04.150] [DEBUG] QUERY OK db=24.9ms queue=43.9ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46817, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401183, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.150] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:13:04.154] [INFO ] Incoming JSON payload: {"oid":"07bf83ec-4c7c-4536-9b51-fea0cd620f02","sn":"98251226730001","uploadTime":"2026-07-09T21:15:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:15:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:13:04.156] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "07bf83ec-4c7c-4536-9b51-fea0cd620f02", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:15:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:15:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:15:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:15:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:15:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:15:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:15:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:15:59Z", "vendor" => "morefun"} [2026-07-09 13:13:04.156] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:04.156] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:13:04.156] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:04.159] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=79.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-07-09 13:13:04.161] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=9.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-07-09 13:13:04.161] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:04.165] [DEBUG] QUERY OK source="tms_terminals" db=4.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:04.165] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:13:04.198] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms queue=0.3ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:04.198] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:13:04.201] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=33.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:697 [2026-07-09 13:13:04.227] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:04.250] [DEBUG] QUERY OK db=23.0ms idle=26.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "07bf83ec-4c7c-4536-9b51-fea0cd620f02", "2026-07-09T21:15:59Z", ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:04.251] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46818, oid: "07bf83ec-4c7c-4536-9b51-fea0cd620f02", upload_time: "2026-07-09T21:15:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]} [2026-07-09 13:13:04.251] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:15:59Z", "value" => "morefun"} [2026-07-09 13:13:04.320] [DEBUG] QUERY OK db=22.0ms queue=43.8ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "morefun", "vendor", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401184, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.321] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:15:59Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:04.379] [DEBUG] QUERY OK db=16.6ms queue=41.0ms idle=70.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "kiosk_launcher", "model", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401185, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.379] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:15:59Z", "value" => "1.0"} [2026-07-09 13:13:04.414] [DEBUG] QUERY OK db=34.9ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "1.0", "app_version", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401186, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.415] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:15:59Z", "value" => "13"} [2026-07-09 13:13:04.452] [DEBUG] QUERY OK db=36.8ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "13", "android_version", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401187, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.452] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "913"} [2026-07-09 13:13:04.478] [DEBUG] QUERY OK db=24.8ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "913", "ram_free_mb", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401188, itemkey: "ram_free_mb", value: "913", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.478] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:15:59Z", "value" => "WIFI"} [2026-07-09 13:13:04.507] [DEBUG] QUERY OK db=28.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "WIFI", "network_type", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401189, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.508] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:15:59Z", "value" => "true"} [2026-07-09 13:13:04.534] [DEBUG] QUERY OK db=25.9ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "true", "kiosk_active", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401190, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.534] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:15:59Z", "value" => ""} [2026-07-09 13:13:04.614] [DEBUG] QUERY OK db=35.7ms queue=43.8ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:15:59Z", "sim_operator", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401191, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.615] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"} [2026-07-09 13:13:04.638] [DEBUG] QUERY OK db=23.4ms idle=80.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "UNKNOWN", "sim_number", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401192, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.640] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"} [2026-07-09 13:13:04.662] [DEBUG] QUERY OK db=20.6ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "UNKNOWN", "sim_iccid", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401193, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.666] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"} [2026-07-09 13:13:04.702] [DEBUG] QUERY OK db=34.9ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "UNKNOWN", "sim_imsi", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401194, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.706] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"} [2026-07-09 13:13:04.741] [DEBUG] QUERY OK db=34.0ms idle=9.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "UNKNOWN", "sim_iccid2", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401195, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.744] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:15:59Z", "value" => "UNKNOWN"} [2026-07-09 13:13:04.776] [DEBUG] QUERY OK db=31.2ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "UNKNOWN", "sim_imsi2", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401196, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.777] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "11"} [2026-07-09 13:13:04.804] [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-07-09T21:15:59Z", "11", "data_usage_mb", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401197, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.805] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:15:59Z", "value" => "0"} [2026-07-09 13:13:04.843] [DEBUG] QUERY OK db=38.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15:59Z", "0", "mobile_data_mb", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401198, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.847] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:13:04.889] [DEBUG] QUERY OK db=41.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:15: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46818, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:04.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401199, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:15:59Z", message: nil, status_log_id: 46818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:04.891] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:04.891] [INFO ] Incoming JSON payload: {"oid":"d69a714b-7b81-4520-bea9-81db0d840fce","sn":"98250904730001","uploadTime":"2026-07-09T13:12:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"ram_free_mb","value":"1080","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:12:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:04.895] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d69a714b-7b81-4520-bea9-81db0d840fce", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "1080"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:12:51Z", "vendor" => "morefun"} [2026-07-09 13:13:04.895] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:04.896] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:04.896] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:04.898] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=52.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-07-09 13:13:04.900] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=12.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-07-09 13:13:04.901] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:04.902] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:04.902] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:04.927] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:04], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:04.927] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:04.930] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:04.960] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:04], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:04.987] [DEBUG] QUERY OK db=26.8ms idle=30.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "d69a714b-7b81-4520-bea9-81db0d840fce", "2026-07-09T13:12:51Z", ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:04.988] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46819, oid: "d69a714b-7b81-4520-bea9-81db0d840fce", upload_time: "2026-07-09T13:12:51Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]} [2026-07-09 13:13:04.988] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:51Z", "value" => "morefun"} [2026-07-09 13:13:05.011] [DEBUG] QUERY OK db=18.6ms queue=0.2ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "morefun", "vendor", 46819, ~N[2026-07-09 13:13:04], ~N[2026-07-09 13:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401200, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:04], updated_at: ~N[2026-07-09 13:13:04]}} [2026-07-09 13:13:05.012] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:51Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:05.032] [DEBUG] QUERY OK db=19.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "kiosk_launcher", "model", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401201, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.032] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:51Z", "value" => "1.0"} [2026-07-09 13:13:05.076] [DEBUG] QUERY OK db=42.9ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "1.0", "app_version", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401202, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.076] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:51Z", "value" => "13"} [2026-07-09 13:13:05.112] [DEBUG] QUERY OK db=35.4ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "13", "android_version", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401203, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.112] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "1080"} [2026-07-09 13:13:05.170] [DEBUG] QUERY OK db=56.8ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "1080", "ram_free_mb", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401204, itemkey: "ram_free_mb", value: "1080", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.170] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:51Z", "value" => "WIFI"} [2026-07-09 13:13:05.203] [DEBUG] QUERY OK db=32.3ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "WIFI", "network_type", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401205, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.204] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:51Z", "value" => "true"} [2026-07-09 13:13:05.251] [DEBUG] QUERY OK db=46.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "true", "kiosk_active", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401206, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.253] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:51Z", "value" => ""} [2026-07-09 13:13:05.321] [DEBUG] QUERY OK db=26.6ms queue=41.6ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:12:51Z", "sim_operator", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401207, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.322] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:05.374] [DEBUG] QUERY OK db=51.2ms queue=0.1ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "UNKNOWN", "sim_number", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401208, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.374] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:05.424] [DEBUG] QUERY OK db=49.4ms queue=0.1ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "UNKNOWN", "sim_iccid", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401209, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:05.467] [DEBUG] QUERY OK db=41.9ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "UNKNOWN", "sim_imsi", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401210, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.468] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:05.513] [DEBUG] QUERY OK db=44.6ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "UNKNOWN", "sim_iccid2", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401211, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.513] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:05.567] [DEBUG] QUERY OK db=53.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "UNKNOWN", "sim_imsi2", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401212, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.567] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "28"} [2026-07-09 13:13:05.592] [DEBUG] QUERY OK db=24.5ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "28", "data_usage_mb", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401213, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.592] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:51Z", "value" => "0"} [2026-07-09 13:13:05.610] [DEBUG] QUERY OK db=16.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:51Z", "0", "mobile_data_mb", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401214, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.611] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:05.634] [DEBUG] QUERY OK db=22.0ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46819, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401215, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:12:51Z", message: nil, status_log_id: 46819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.638] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:05.640] [INFO ] Incoming JSON payload: {"oid":"cebbe57e-b326-42b8-abbd-582cfbb8a82c","sn":"98250904730001","uploadTime":"2026-07-09T13:12:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"ram_free_mb","value":"1084","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:12:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:05.641] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:12:21Z", "vendor" => "morefun"} [2026-07-09 13:13:05.643] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:05.643] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:05.643] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:05.645] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms 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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:13:05.645] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=11.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-07-09 13:13:05.646] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:05.649] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:05.649] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:05.674] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:05], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:05.674] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:05.676] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:05.715] [DEBUG] QUERY OK source="tms_terminals" db=38.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:05], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:05.743] [DEBUG] QUERY OK db=27.6ms idle=13.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "cebbe57e-b326-42b8-abbd-582cfbb8a82c", "2026-07-09T13:12:21Z", ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:05.743] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46820, oid: "cebbe57e-b326-42b8-abbd-582cfbb8a82c", upload_time: "2026-07-09T13:12:21Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]} [2026-07-09 13:13:05.743] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:12:21Z", "value" => "morefun"} [2026-07-09 13:13:05.766] [DEBUG] QUERY OK db=22.4ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "morefun", "vendor", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401216, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.766] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:12:21Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:05.799] [DEBUG] QUERY OK db=32.3ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "kiosk_launcher", "model", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401217, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.799] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1.0"} [2026-07-09 13:13:05.833] [DEBUG] QUERY OK db=33.0ms queue=0.2ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1.0", "app_version", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401218, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.834] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:12:21Z", "value" => "13"} [2026-07-09 13:13:05.857] [DEBUG] QUERY OK db=23.0ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "13", "android_version", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401219, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.857] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "1084"} [2026-07-09 13:13:05.872] [DEBUG] QUERY OK db=13.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "1084", "ram_free_mb", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401220, itemkey: "ram_free_mb", value: "1084", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.873] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:12:21Z", "value" => "WIFI"} [2026-07-09 13:13:05.904] [DEBUG] QUERY OK db=30.4ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "WIFI", "network_type", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401221, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.907] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:12:21Z", "value" => "true"} [2026-07-09 13:13:05.947] [DEBUG] QUERY OK db=37.1ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "true", "kiosk_active", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401222, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.948] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:12:21Z", "value" => ""} [2026-07-09 13:13:05.981] [DEBUG] QUERY OK db=32.7ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:12:21Z", "sim_operator", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:05.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401223, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:05.981] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:06.009] [DEBUG] QUERY OK db=27.6ms queue=0.1ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_number", 46820, ~N[2026-07-09 13:13:05], ~N[2026-07-09 13:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401224, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:05], updated_at: ~N[2026-07-09 13:13:05]}} [2026-07-09 13:13:06.009] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:06.047] [DEBUG] QUERY OK db=37.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401225, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.047] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:06.091] [DEBUG] QUERY OK db=43.2ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401226, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.091] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:06.117] [DEBUG] QUERY OK db=25.8ms queue=0.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_iccid2", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401227, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.118] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:12:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:06.157] [DEBUG] QUERY OK db=38.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "UNKNOWN", "sim_imsi2", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401228, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.157] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "28"} [2026-07-09 13:13:06.188] [DEBUG] QUERY OK db=30.9ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "28", "data_usage_mb", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401229, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.190] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:12:21Z", "value" => "0"} [2026-07-09 13:13:06.233] [DEBUG] QUERY OK db=40.5ms queue=1.9ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12:21Z", "0", "mobile_data_mb", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401230, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.233] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:06.278] [DEBUG] QUERY OK db=43.4ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:12: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46820, ~N[2026-07-09 13:13:06], ~N[2026-07-09 13:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:06.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401231, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:12:21Z", message: nil, status_log_id: 46820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:06], updated_at: ~N[2026-07-09 13:13:06]}} [2026-07-09 13:13:06.283] [WARN ] Unexpected async result [2026-07-09 13:13:06.284] [WARN ] Unexpected async result [2026-07-09 13:13:10.015] [INFO ] GET /users/log_in [2026-07-09 13:13:10.016] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-07-09 13:13:10.109] [INFO ] Sent 200 in 94ms [2026-07-09 13:13:11.513] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "WkABLy48FQlIJSJ5Djl1ByY3CVogAyYih3uLiIGE2wF3mM8coxgjuAWl", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4059/assets/app.css", "1" => "http://demo.ctrmv.com:4059/assets/app.js"}, "vsn" => "2.0.0"} [2026-07-09 13:13:11.743] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "2stcGuRLzRdJctMdIOn0UBqN"} [2026-07-09 13:13:11.743] [DEBUG] Replied in 210µs [2026-07-09 13:13:21.824] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:13:21.824] [INFO ] Incoming JSON payload: {"oid":"413d8c6b-c38a-4dac-b884-00c23164b8ed","sn":"98251226730001","uploadTime":"2026-07-09T21:16:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:16:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:16: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:13:21.826] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "413d8c6b-c38a-4dac-b884-00c23164b8ed", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:16:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:16:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:16:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:16:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:16:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:16:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:16:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:16: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:16:29Z", "vendor" => "morefun"} [2026-07-09 13:13:21.826] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:21.826] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:13:21.826] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:21.828] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.2ms idle=1078.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-07-09 13:13:21.829] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=78.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-07-09 13:13:21.829] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:21.831] [DEBUG] QUERY OK source="tms_terminals" db=2.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:21.832] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:13:21.861] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:21.861] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:13:21.862] [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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:21.891] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:21.909] [DEBUG] QUERY OK db=17.6ms idle=29.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "413d8c6b-c38a-4dac-b884-00c23164b8ed", "2026-07-09T21:16:29Z", ~N[2026-07-09 13:13:21], ~N[2026-07-09 13:13:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:21.910] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46821, oid: "413d8c6b-c38a-4dac-b884-00c23164b8ed", upload_time: "2026-07-09T21:16:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:21], updated_at: ~N[2026-07-09 13:13:21]} [2026-07-09 13:13:21.910] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:16:29Z", "value" => "morefun"} [2026-07-09 13:13:21.926] [DEBUG] QUERY OK db=15.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "morefun", "vendor", 46821, ~N[2026-07-09 13:13:21], ~N[2026-07-09 13:13:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:21.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401232, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:21], updated_at: ~N[2026-07-09 13:13:21]}} [2026-07-09 13:13:21.926] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:16:29Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:21.949] [DEBUG] QUERY OK db=22.5ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "kiosk_launcher", "model", 46821, ~N[2026-07-09 13:13:21], ~N[2026-07-09 13:13:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:21.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401233, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:21], updated_at: ~N[2026-07-09 13:13:21]}} [2026-07-09 13:13:21.950] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:16:29Z", "value" => "1.0"} [2026-07-09 13:13:21.973] [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-07-09T21:16:29Z", "1.0", "app_version", 46821, ~N[2026-07-09 13:13:21], ~N[2026-07-09 13:13:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:21.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401234, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:21], updated_at: ~N[2026-07-09 13:13:21]}} [2026-07-09 13:13:21.975] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:16:29Z", "value" => "13"} [2026-07-09 13:13:21.999] [DEBUG] QUERY OK db=24.1ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "13", "android_version", 46821, ~N[2026-07-09 13:13:21], ~N[2026-07-09 13:13:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401235, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:21], updated_at: ~N[2026-07-09 13:13:21]}} [2026-07-09 13:13:22.000] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "916"} [2026-07-09 13:13:22.018] [DEBUG] QUERY OK db=17.8ms idle=2.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "916", "ram_free_mb", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401236, itemkey: "ram_free_mb", value: "916", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.019] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:16:29Z", "value" => "WIFI"} [2026-07-09 13:13:22.046] [DEBUG] QUERY OK db=27.2ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "WIFI", "network_type", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401237, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.046] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:16:29Z", "value" => "true"} [2026-07-09 13:13:22.085] [DEBUG] QUERY OK db=37.9ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "true", "kiosk_active", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401238, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.085] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:16:29Z", "value" => ""} [2026-07-09 13:13:22.142] [DEBUG] QUERY OK db=56.2ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:16:29Z", "sim_operator", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401239, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.142] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.170] [DEBUG] QUERY OK db=27.3ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "UNKNOWN", "sim_number", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401240, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.170] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.191] [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-07-09T21:16:29Z", "UNKNOWN", "sim_iccid", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401241, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.192] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.229] [DEBUG] QUERY OK db=36.6ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "UNKNOWN", "sim_imsi", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401242, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.229] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.252] [DEBUG] QUERY OK db=23.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "UNKNOWN", "sim_iccid2", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401243, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.253] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:16:29Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.269] [DEBUG] QUERY OK db=15.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "UNKNOWN", "sim_imsi2", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401244, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.269] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "11"} [2026-07-09 13:13:22.287] [DEBUG] QUERY OK db=17.1ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "11", "data_usage_mb", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401245, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.288] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:16:29Z", "value" => "0"} [2026-07-09 13:13:22.311] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16:29Z", "0", "mobile_data_mb", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401246, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.312] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:16: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:13:22.343] [DEBUG] QUERY OK db=30.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:16: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46821, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401247, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:16:29Z", message: nil, status_log_id: 46821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.344] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:22.345] [INFO ] Incoming JSON payload: {"oid":"45b24927-0635-41af-b4c4-b2eecbca4d08","sn":"98250904730001","uploadTime":"2026-07-09T13:13:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"ram_free_mb","value":"1077","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:13:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:22.346] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "45b24927-0635-41af-b4c4-b2eecbca4d08", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:13:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:13:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:13:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:13:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "1077"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:13:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:13:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:13:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:13:21Z", "vendor" => "morefun"} [2026-07-09 13:13:22.346] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:22.346] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:22.346] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:22.347] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=35.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-07-09 13:13:22.348] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=4.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-07-09 13:13:22.348] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:22.349] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:22.349] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:22.364] [DEBUG] QUERY OK source="tms_terminals" db=14.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:22], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:22.364] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:22.365] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:22.395] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:22], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:22.419] [DEBUG] QUERY OK db=23.2ms idle=30.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "45b24927-0635-41af-b4c4-b2eecbca4d08", "2026-07-09T13:13:21Z", ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:22.419] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46822, oid: "45b24927-0635-41af-b4c4-b2eecbca4d08", upload_time: "2026-07-09T13:13:21Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]} [2026-07-09 13:13:22.419] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:13:21Z", "value" => "morefun"} [2026-07-09 13:13:22.441] [DEBUG] QUERY OK db=21.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "morefun", "vendor", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401248, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.442] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:13:21Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:22.455] [DEBUG] QUERY OK db=12.6ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "kiosk_launcher", "model", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401249, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.455] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:13:21Z", "value" => "1.0"} [2026-07-09 13:13:22.467] [DEBUG] QUERY OK db=11.1ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "1.0", "app_version", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401250, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.467] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:13:21Z", "value" => "13"} [2026-07-09 13:13:22.497] [DEBUG] QUERY OK db=29.7ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "13", "android_version", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401251, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.498] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "1077"} [2026-07-09 13:13:22.531] [DEBUG] QUERY OK db=33.4ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "1077", "ram_free_mb", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401252, itemkey: "ram_free_mb", value: "1077", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.532] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:13:21Z", "value" => "WIFI"} [2026-07-09 13:13:22.547] [DEBUG] QUERY OK db=14.8ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "WIFI", "network_type", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401253, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.547] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:13:21Z", "value" => "true"} [2026-07-09 13:13:22.562] [DEBUG] QUERY OK db=14.5ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "true", "kiosk_active", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401254, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.562] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:13:21Z", "value" => ""} [2026-07-09 13:13:22.579] [DEBUG] QUERY OK db=16.8ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:13:21Z", "sim_operator", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401255, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.580] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.603] [DEBUG] QUERY OK db=22.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-07-09T13:13:21Z", "UNKNOWN", "sim_number", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401256, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.604] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.626] [DEBUG] QUERY OK db=22.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "UNKNOWN", "sim_iccid", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401257, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.627] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.643] [DEBUG] QUERY OK db=16.0ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "UNKNOWN", "sim_imsi", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401258, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.644] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.657] [DEBUG] QUERY OK db=12.7ms queue=0.1ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "UNKNOWN", "sim_iccid2", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401259, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.657] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:13:21Z", "value" => "UNKNOWN"} [2026-07-09 13:13:22.671] [DEBUG] QUERY OK db=13.8ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "UNKNOWN", "sim_imsi2", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401260, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.672] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "28"} [2026-07-09 13:13:22.695] [DEBUG] QUERY OK db=22.9ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:21Z", "28", "data_usage_mb", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401261, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.696] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:13:21Z", "value" => "0"} [2026-07-09 13:13:22.720] [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-07-09T13:13:21Z", "0", "mobile_data_mb", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401262, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:22.721] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:22.750] [DEBUG] QUERY OK db=28.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46822, ~N[2026-07-09 13:13:22], ~N[2026-07-09 13:13:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:22.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401263, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:13:21Z", message: nil, status_log_id: 46822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:22], updated_at: ~N[2026-07-09 13:13:22]}} [2026-07-09 13:13:30.252] [INFO ] POST /users/log_in [2026-07-09 13:13:30.253] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "WkABLy48FQlIJSJ5Djl1ByY3CVogAyYih3uLiIGE2wF3mM8coxgjuAWl", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-07-09 13:13:30.255] [DEBUG] QUERY OK source="users" db=0.9ms queue=0.8ms idle=351.8ms SELECT u0.`id`, u0.`email`, u0.`hashed_password`, u0.`confirmed_at`, u0.`role`, u0.`name`, u0.`first_name`, u0.`last_name`, u0.`data`, u0.`inserted_at`, u0.`updated_at` FROM `users` AS u0 WHERE (u0.`email` = ?) ["demo@mercury.com"] ↳ DaProductApp.Users.get_user_by_email_and_password/2, at: lib/da_product_app/users.ex:43 [2026-07-09 13:13:30.561] [DEBUG] QUERY OK db=23.1ms queue=0.5ms idle=635.5ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, 3, ~U[2026-07-09 13:13:30Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-07-09 13:13:30.562] [INFO ] Sent 302 in 309ms [2026-07-09 13:13:30.573] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/Piyush/prverification/TMS_UAT/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-07-09 13:13:30.984] [INFO ] GET /dashboard [2026-07-09 13:13:30.984] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-09 13:13:30.986] [DEBUG] QUERY OK source="users_tokens" db=1.3ms idle=729.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:13:30.985149Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 13:13:31.002] [DEBUG] QUERY OK source="users_tokens" db=3.9ms queue=0.1ms idle=436.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:13:30.997557Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-07-09 13:13:31.010] [DEBUG] Socket Assigns: %{__changed__: %{current_user: true}, current_user: #DaProductApp.Users.User<__meta__: #Ecto.Schema.Metadata<:loaded, "users">, id: 3, email: "demo@mercury.com", confirmed_at: nil, role: :superuser, name: nil, first_name: nil, last_name: nil, data: nil, permissions: #Ecto.Association.NotLoaded, roles: #Ecto.Association.NotLoaded, inserted_at: ~U[2025-05-12 07:36:10Z], updated_at: ~U[2026-03-13 10:38:22Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-07-09 13:13:31.012] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.5ms idle=1054.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-07-09 13:13:31.013] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.8ms idle=236.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-07-09 13:13:31.042] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms queue=0.3ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-07-09 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-07-09 13:13:31.059] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.2ms queue=2.2ms idle=40.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-07-09 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-07-09 13:13:31.060] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=16.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-07-09 13:13:31.061] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-07-09 13:13:31.162] [DEBUG] QUERY OK source="tms_terminals" db=88.9ms queue=2.8ms idle=10.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-07-09 13:13:31.171] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=3.0ms idle=106.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 00:00:00Z], ~U[2026-07-09 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.172] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=0.4ms idle=9.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 00:00:00Z], ~U[2026-07-09 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.173] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 01:00:00Z], ~U[2026-07-09 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.175] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 01:00:00Z], ~U[2026-07-09 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.175] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 02:00:00Z], ~U[2026-07-09 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.176] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 02:00:00Z], ~U[2026-07-09 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.177] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 03:00:00Z], ~U[2026-07-09 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.179] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 03:00:00Z], ~U[2026-07-09 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.180] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=2.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 04:00:00Z], ~U[2026-07-09 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.180] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 04:00:00Z], ~U[2026-07-09 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.181] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 05:00:00Z], ~U[2026-07-09 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.181] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=0.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 05:00:00Z], ~U[2026-07-09 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.182] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.2ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 06:00:00Z], ~U[2026-07-09 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.183] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 06:00:00Z], ~U[2026-07-09 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.185] [DEBUG] QUERY OK source="ota_configurations" db=1.6ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 07:00:00Z], ~U[2026-07-09 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.185] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 07:00:00Z], ~U[2026-07-09 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.186] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 08:00:00Z], ~U[2026-07-09 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.187] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 08:00:00Z], ~U[2026-07-09 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.188] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 09:00:00Z], ~U[2026-07-09 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.188] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 09:00:00Z], ~U[2026-07-09 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.189] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 10:00:00Z], ~U[2026-07-09 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.190] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 10:00:00Z], ~U[2026-07-09 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.191] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 11:00:00Z], ~U[2026-07-09 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.191] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 11:00:00Z], ~U[2026-07-09 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.192] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 12:00:00Z], ~U[2026-07-09 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.193] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 12:00:00Z], ~U[2026-07-09 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.194] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=0.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 13:00:00Z], ~U[2026-07-09 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.194] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 13:00:00Z], ~U[2026-07-09 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.195] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 14:00:00Z], ~U[2026-07-09 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.196] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 14:00:00Z], ~U[2026-07-09 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.197] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 15:00:00Z], ~U[2026-07-09 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.198] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 15:00:00Z], ~U[2026-07-09 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.198] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 16:00:00Z], ~U[2026-07-09 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.199] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 16:00:00Z], ~U[2026-07-09 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.200] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 17:00:00Z], ~U[2026-07-09 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.200] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 17:00:00Z], ~U[2026-07-09 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.201] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 18:00:00Z], ~U[2026-07-09 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.201] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 18:00:00Z], ~U[2026-07-09 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.202] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 19:00:00Z], ~U[2026-07-09 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.202] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 19:00:00Z], ~U[2026-07-09 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.203] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 20:00:00Z], ~U[2026-07-09 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.204] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 20:00:00Z], ~U[2026-07-09 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.205] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.3ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 21:00:00Z], ~U[2026-07-09 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.206] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 21:00:00Z], ~U[2026-07-09 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.207] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 22:00:00Z], ~U[2026-07-09 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.207] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 22:00:00Z], ~U[2026-07-09 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.208] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 23:00:00Z], ~U[2026-07-10 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:31.209] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 23:00:00Z], ~U[2026-07-10 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:31.263] [DEBUG] QUERY OK source="tms_terminals" db=52.6ms queue=0.5ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:31.209589Z], ~U[2026-07-09 12:43:31.209589Z], ~U[2026-07-09 12:13:31.209589Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:31.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.4ms queue=0.4ms idle=54.3ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:13:31]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:13:31.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.8ms queue=0.6ms idle=20.2ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:12:31]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:13:31.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.5ms queue=0.6ms idle=18.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:31]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:13:31.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms idle=13.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:31]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:13:31.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms queue=0.5ms idle=12.3ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:31]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:13:31.338] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=12.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:13:31.398] [DEBUG] QUERY OK source="tms_terminals" db=59.7ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:31.338714Z], ~U[2026-07-09 12:43:31.338714Z], ~U[2026-07-09 12:13:31.338714Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:31.461] [DEBUG] QUERY OK source="tms_terminals" db=62.0ms idle=60.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:31.398860Z], ~U[2026-07-09 12:43:31.398860Z], ~U[2026-07-09 12:13:31.398860Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:31.538] [DEBUG] QUERY OK source="tms_terminals" db=77.0ms idle=63.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:31.461482Z], ~U[2026-07-09 12:43:31.461482Z], ~U[2026-07-09 12:13:31.461482Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:31.603] [DEBUG] QUERY OK source="tms_terminals" db=64.0ms idle=78.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:31.539130Z], ~U[2026-07-09 12:43:31.539130Z], ~U[2026-07-09 12:13:31.539130Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:31.667] [INFO ] Sent 200 in 682ms [2026-07-09 13:13:32.800] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 31µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "MhkmZjAqZDkTDRpxBT9lRQAQPRpDcxYEUKt1xa3oXCS33T1wTYwY00YQ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4059/assets/app.css", "1" => "http://demo.ctrmv.com:4059/assets/app.js"}, "vsn" => "2.0.0"} [2026-07-09 13:13:32.976] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "gRRWHKWVKNIB6kT2TIJCsCOU", "live_socket_id" => "users_sessions:1_3-m4Syu0yqYEcT2OpIqGkCk_oufbj97P6krg81ugg=", "user_token" => <<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>} [2026-07-09 13:13:32.977] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=76.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:13:32.976305Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-09 13:13:32.977] [DEBUG] QUERY OK source="users_tokens" db=0.4ms idle=77.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:13:32.977356Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-07-09 13:13:32.978] [DEBUG] Socket Assigns: %{__changed__: %{current_user: true}, current_user: #DaProductApp.Users.User<__meta__: #Ecto.Schema.Metadata<:loaded, "users">, id: 3, email: "demo@mercury.com", confirmed_at: nil, role: :superuser, name: nil, first_name: nil, last_name: nil, data: nil, permissions: #Ecto.Association.NotLoaded, roles: #Ecto.Association.NotLoaded, inserted_at: ~U[2025-05-12 07:36:10Z], updated_at: ~U[2026-03-13 10:38:22Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-07-09 13:13:32.978] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=194.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-07-09 13:13:32.979] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=21.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-07-09 13:13:32.992] [DEBUG] QUERY OK source="tms_terminals" db=12.2ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-07-09 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-07-09 13:13:32.993] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms queue=0.1ms idle=12.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-07-09 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-07-09 13:13:32.994] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-07-09 13:13:32.995] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-07-09 13:13:33.068] [DEBUG] QUERY OK source="tms_terminals" db=72.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-07-09 13:13:33.070] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms idle=73.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 00:00:00Z], ~U[2026-07-09 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.071] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 00:00:00Z], ~U[2026-07-09 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.072] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.3ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 01:00:00Z], ~U[2026-07-09 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.072] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 01:00:00Z], ~U[2026-07-09 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.073] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 02:00:00Z], ~U[2026-07-09 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.074] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 02:00:00Z], ~U[2026-07-09 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.075] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 03:00:00Z], ~U[2026-07-09 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.075] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 03:00:00Z], ~U[2026-07-09 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.076] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 04:00:00Z], ~U[2026-07-09 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.077] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 04:00:00Z], ~U[2026-07-09 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.078] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 05:00:00Z], ~U[2026-07-09 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.078] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 05:00:00Z], ~U[2026-07-09 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.079] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 06:00:00Z], ~U[2026-07-09 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.080] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 06:00:00Z], ~U[2026-07-09 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.081] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 07:00:00Z], ~U[2026-07-09 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.082] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 07:00:00Z], ~U[2026-07-09 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.082] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 08:00:00Z], ~U[2026-07-09 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.083] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 08:00:00Z], ~U[2026-07-09 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.084] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 09:00:00Z], ~U[2026-07-09 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.084] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 09:00:00Z], ~U[2026-07-09 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.085] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 10:00:00Z], ~U[2026-07-09 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.086] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 10:00:00Z], ~U[2026-07-09 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.086] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 11:00:00Z], ~U[2026-07-09 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.087] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 11:00:00Z], ~U[2026-07-09 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.088] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 12:00:00Z], ~U[2026-07-09 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.089] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 12:00:00Z], ~U[2026-07-09 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.089] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 13:00:00Z], ~U[2026-07-09 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.090] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 13:00:00Z], ~U[2026-07-09 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.092] [DEBUG] QUERY OK source="ota_configurations" db=1.2ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 14:00:00Z], ~U[2026-07-09 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.096] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.3ms idle=3.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 14:00:00Z], ~U[2026-07-09 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.097] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=4.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 15:00:00Z], ~U[2026-07-09 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.098] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 15:00:00Z], ~U[2026-07-09 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.099] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 16:00:00Z], ~U[2026-07-09 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.099] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.1ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 16:00:00Z], ~U[2026-07-09 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.101] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 17:00:00Z], ~U[2026-07-09 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.104] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.2ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 17:00:00Z], ~U[2026-07-09 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.105] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=3.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 18:00:00Z], ~U[2026-07-09 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.106] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 18:00:00Z], ~U[2026-07-09 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.107] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.1ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 19:00:00Z], ~U[2026-07-09 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.108] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 19:00:00Z], ~U[2026-07-09 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.109] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 20:00:00Z], ~U[2026-07-09 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.109] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 20:00:00Z], ~U[2026-07-09 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.110] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 21:00:00Z], ~U[2026-07-09 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.111] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 21:00:00Z], ~U[2026-07-09 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.112] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 22:00:00Z], ~U[2026-07-09 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.113] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 22:00:00Z], ~U[2026-07-09 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.113] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-09 23:00:00Z], ~U[2026-07-10 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-09 13:13:33.114] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-09 23:00:00Z], ~U[2026-07-10 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-09 13:13:33.162] [DEBUG] QUERY OK source="tms_terminals" db=47.7ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:33.114688Z], ~U[2026-07-09 12:43:33.114688Z], ~U[2026-07-09 12:13:33.114688Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:33.174] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms idle=48.4ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:13:33]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:13:33.187] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.9ms idle=12.7ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:12:33]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:13:33.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.6ms queue=0.5ms idle=12.8ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:33]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:13:33.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.9ms idle=14.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:33]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:13:33.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=11.7ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:13:33]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:13:33.226] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=11.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:13:33.276] [DEBUG] QUERY OK source="tms_terminals" db=49.7ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:33.226287Z], ~U[2026-07-09 12:43:33.226287Z], ~U[2026-07-09 12:13:33.226287Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:33.326] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms idle=50.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:33.276587Z], ~U[2026-07-09 12:43:33.276587Z], ~U[2026-07-09 12:13:33.276587Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:33.378] [DEBUG] QUERY OK source="tms_terminals" db=51.5ms idle=50.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:33.327030Z], ~U[2026-07-09 12:43:33.327030Z], ~U[2026-07-09 12:13:33.327030Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:33.429] [DEBUG] QUERY OK source="tms_terminals" db=49.9ms idle=52.6ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:08:33.379111Z], ~U[2026-07-09 12:43:33.379111Z], ~U[2026-07-09 12:13:33.379111Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:13:33.430] [DEBUG] Replied in 454ms [2026-07-09 13:13:33.986] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 13:13:33.986] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-09T13:13:32Z","org.device":[{"itemkey":"battery","value":68,"timestamp":"2026-07-09T13:13:32Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-09T13:13:32Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-09T13:13:32Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-09T13:13:32Z","message":""}]} [2026-07-09 13:13:33.986] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => 68}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:13:32Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-09T13:13:32Z"} [2026-07-09 13:13:33.987] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:33.987] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=557.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:33.988] [INFO ] Terminal updated: 61251020798002 [2026-07-09 13:13:34.002] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms idle=201.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:33], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:34.003] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=14.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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:34.034] [DEBUG] QUERY OK source="tms_terminals" db=30.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:34], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:34.062] [DEBUG] QUERY OK db=27.4ms idle=31.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-09T13:13:32Z", ~N[2026-07-09 13:13:34], ~N[2026-07-09 13:13:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:34.062] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46823, oid: "org-id-placeholder", upload_time: "2026-07-09T13:13:32Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:34], updated_at: ~N[2026-07-09 13:13:34]} [2026-07-09 13:13:34.062] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => 68} [2026-07-09 13:13:34.078] [DEBUG] QUERY OK db=15.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-07-09T13:13:32Z", "68", "battery", 46823, ~N[2026-07-09 13:13:34], ~N[2026-07-09 13:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:34.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401264, itemkey: "battery", value: "68", timestamp: "2026-07-09T13:13:32Z", message: nil, status_log_id: 46823, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:34], updated_at: ~N[2026-07-09 13:13:34]}} [2026-07-09 13:13:34.078] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:13:32Z", "value" => 50} [2026-07-09 13:13:34.089] [DEBUG] QUERY OK db=10.6ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-09T13:13:32Z", "50", "memory", 46823, ~N[2026-07-09 13:13:34], ~N[2026-07-09 13:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:34.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401265, itemkey: "memory", value: "50", timestamp: "2026-07-09T13:13:32Z", message: "Normal", status_log_id: 46823, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:34], updated_at: ~N[2026-07-09 13:13:34]}} [2026-07-09 13:13:34.090] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => 50} [2026-07-09 13:13:34.110] [DEBUG] QUERY OK db=19.8ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:32Z", "50", "cpu", 46823, ~N[2026-07-09 13:13:34], ~N[2026-07-09 13:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:34.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401266, itemkey: "cpu", value: "50", timestamp: "2026-07-09T13:13:32Z", message: nil, status_log_id: 46823, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:34], updated_at: ~N[2026-07-09 13:13:34]}} [2026-07-09 13:13:34.111] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:13:32Z", "value" => "online"} [2026-07-09 13:13:34.149] [DEBUG] QUERY OK db=37.3ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:32Z", "online", "network", 46823, ~N[2026-07-09 13:13:34], ~N[2026-07-09 13:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:34.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401267, itemkey: "network", value: "online", timestamp: "2026-07-09T13:13:32Z", message: nil, status_log_id: 46823, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:34], updated_at: ~N[2026-07-09 13:13:34]}} [2026-07-09 13:13:34.150] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-09 13:13:52.243] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:13:52.243] [INFO ] Incoming JSON payload: {"oid":"6f895f99-5896-422b-b4d9-2f1abe398def","sn":"98250904730001","uploadTime":"2026-07-09T13:13:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"data_usage_mb","value":"28","timestamp":"2026-07-09T13:13:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:13:52.244] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6f895f99-5896-422b-b4d9-2f1abe398def", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:13:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:13:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:13:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:13:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:13:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:13:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:13:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "28"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:13:51Z", "vendor" => "morefun"} [2026-07-09 13:13:52.245] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:52.245] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:13:52.245] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:52.246] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=289.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-07-09 13:13:52.247] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=204.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-07-09 13:13:52.247] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:52.247] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:52.248] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:13:52.265] [DEBUG] QUERY OK source="tms_terminals" db=17.2ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:52], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:52.265] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:13:52.266] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=18.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:52.284] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:52], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:52.308] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=18.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "6f895f99-5896-422b-b4d9-2f1abe398def", "2026-07-09T13:13:51Z", ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:52.308] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46824, oid: "6f895f99-5896-422b-b4d9-2f1abe398def", upload_time: "2026-07-09T13:13:51Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]} [2026-07-09 13:13:52.309] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:13:51Z", "value" => "morefun"} [2026-07-09 13:13:52.337] [DEBUG] QUERY OK db=28.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "morefun", "vendor", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401268, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.338] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:13:51Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:52.354] [DEBUG] QUERY OK db=15.9ms queue=0.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "kiosk_launcher", "model", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401269, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.355] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:13:51Z", "value" => "1.0"} [2026-07-09 13:13:52.374] [DEBUG] QUERY OK db=18.7ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "1.0", "app_version", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401270, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.374] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:13:51Z", "value" => "13"} [2026-07-09 13:13:52.400] [DEBUG] QUERY OK db=25.4ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "13", "android_version", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401271, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.401] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "1081"} [2026-07-09 13:13:52.438] [DEBUG] QUERY OK db=37.0ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "1081", "ram_free_mb", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401272, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.438] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:13:51Z", "value" => "WIFI"} [2026-07-09 13:13:52.454] [DEBUG] QUERY OK db=15.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "WIFI", "network_type", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401273, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.454] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:13:51Z", "value" => "true"} [2026-07-09 13:13:52.488] [DEBUG] QUERY OK db=33.4ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "true", "kiosk_active", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401274, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.489] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:13:51Z", "value" => ""} [2026-07-09 13:13:52.512] [DEBUG] QUERY OK db=23.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:13:51Z", "sim_operator", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401275, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.512] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.527] [DEBUG] QUERY OK db=13.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "UNKNOWN", "sim_number", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401276, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.527] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.541] [DEBUG] QUERY OK db=14.1ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "UNKNOWN", "sim_iccid", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401277, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.542] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.564] [DEBUG] QUERY OK db=21.8ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "UNKNOWN", "sim_imsi", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401278, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.565] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.587] [DEBUG] QUERY OK db=22.1ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "UNKNOWN", "sim_iccid2", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401279, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.588] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:13:51Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.613] [DEBUG] QUERY OK db=24.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "UNKNOWN", "sim_imsi2", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401280, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.613] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "28"} [2026-07-09 13:13:52.630] [DEBUG] QUERY OK db=16.0ms queue=0.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "28", "data_usage_mb", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401281, itemkey: "data_usage_mb", value: "28", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.630] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:13:51Z", "value" => "0"} [2026-07-09 13:13:52.648] [DEBUG] QUERY OK db=17.6ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:13:51Z", "0", "mobile_data_mb", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401282, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.650] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:13:52.677] [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-07-09T13:13: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46824, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401283, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:13:51Z", message: nil, status_log_id: 46824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.679] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:13:52.679] [INFO ] Incoming JSON payload: {"oid":"5ebe3803-15e0-4c82-a4b5-378d270da197","sn":"98251226730001","uploadTime":"2026-07-09T21:17:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:17:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:17: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.reso (truncated) [2026-07-09 13:13:52.682] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5ebe3803-15e0-4c82-a4b5-378d270da197", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:17:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:17:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:17:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:17:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:17:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:17:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:17:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:17: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-07-09T21:17:00Z", "vendor" => "morefun"} [2026-07-09 13:13:52.682] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:13:52.682] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:13:52.682] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:13:52.683] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=33.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-07-09 13:13:52.684] [DEBUG] QUERY OK source="parameter_templates" db=0.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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:13:52.684] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:13:52.685] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:13:52.686] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:13:52.714] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:13:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:13:52.714] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:13:52.715] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:13:52.734] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:13:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:13:52.746] [DEBUG] QUERY OK db=11.4ms queue=0.1ms idle=18.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5ebe3803-15e0-4c82-a4b5-378d270da197", "2026-07-09T21:17:00Z", ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:13:52.746] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46825, oid: "5ebe3803-15e0-4c82-a4b5-378d270da197", upload_time: "2026-07-09T21:17:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]} [2026-07-09 13:13:52.746] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:17:00Z", "value" => "morefun"} [2026-07-09 13:13:52.778] [DEBUG] QUERY OK db=31.3ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "morefun", "vendor", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401284, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.779] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:17:00Z", "value" => "kiosk_launcher"} [2026-07-09 13:13:52.802] [DEBUG] QUERY OK db=22.6ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "kiosk_launcher", "model", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401285, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.802] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:17:00Z", "value" => "1.0"} [2026-07-09 13:13:52.826] [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-07-09T21:17:00Z", "1.0", "app_version", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401286, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.828] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:17:00Z", "value" => "13"} [2026-07-09 13:13:52.839] [DEBUG] QUERY OK db=11.4ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "13", "android_version", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401287, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.840] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "913"} [2026-07-09 13:13:52.857] [DEBUG] QUERY OK db=16.7ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "913", "ram_free_mb", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401288, itemkey: "ram_free_mb", value: "913", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.857] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:17:00Z", "value" => "WIFI"} [2026-07-09 13:13:52.881] [DEBUG] QUERY OK db=22.9ms queue=0.2ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "WIFI", "network_type", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401289, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.881] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:17:00Z", "value" => "true"} [2026-07-09 13:13:52.909] [DEBUG] QUERY OK db=27.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "true", "kiosk_active", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401290, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.910] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:17:00Z", "value" => ""} [2026-07-09 13:13:52.928] [DEBUG] QUERY OK db=17.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:17:00Z", "sim_operator", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401291, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.928] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.940] [DEBUG] QUERY OK db=11.4ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "UNKNOWN", "sim_number", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401292, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.940] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.957] [DEBUG] QUERY OK db=16.4ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "UNKNOWN", "sim_iccid", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401293, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"} [2026-07-09 13:13:52.979] [DEBUG] QUERY OK db=21.7ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "UNKNOWN", "sim_imsi", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:52.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401294, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:52.980] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"} [2026-07-09 13:13:53.002] [DEBUG] QUERY OK db=22.1ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "UNKNOWN", "sim_iccid2", 46825, ~N[2026-07-09 13:13:52], ~N[2026-07-09 13:13:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:53.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401295, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:52], updated_at: ~N[2026-07-09 13:13:52]}} [2026-07-09 13:13:53.003] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:17:00Z", "value" => "UNKNOWN"} [2026-07-09 13:13:53.019] [DEBUG] QUERY OK db=16.5ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "UNKNOWN", "sim_imsi2", 46825, ~N[2026-07-09 13:13:53], ~N[2026-07-09 13:13:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:53.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401296, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:53], updated_at: ~N[2026-07-09 13:13:53]}} [2026-07-09 13:13:53.020] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "11"} [2026-07-09 13:13:53.032] [DEBUG] QUERY OK db=11.9ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "11", "data_usage_mb", 46825, ~N[2026-07-09 13:13:53], ~N[2026-07-09 13:13:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:53.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401297, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:53], updated_at: ~N[2026-07-09 13:13:53]}} [2026-07-09 13:13:53.032] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:17:00Z", "value" => "0"} [2026-07-09 13:13:53.062] [DEBUG] QUERY OK db=28.7ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:00Z", "0", "mobile_data_mb", 46825, ~N[2026-07-09 13:13:53], ~N[2026-07-09 13:13:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:53.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401298, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:53], updated_at: ~N[2026-07-09 13:13:53]}} [2026-07-09 13:13:53.062] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:17: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-07-09 13:13:53.115] [DEBUG] QUERY OK db=51.3ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17: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" <> ..., "installed_apps", 46825, ~N[2026-07-09 13:13:53], ~N[2026-07-09 13:13:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:13:53.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401299, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:17:00Z", message: nil, status_log_id: 46825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:13:53], updated_at: ~N[2026-07-09 13:13:53]}} [2026-07-09 13:14:03.276] [DEBUG] MOUNT PlatformWeb.AnalyticsLive Parameters: %{} Session: %{"_csrf_token" => "gRRWHKWVKNIB6kT2TIJCsCOU", "live_socket_id" => "users_sessions:1_3-m4Syu0yqYEcT2OpIqGkCk_oufbj97P6krg81ugg=", "user_token" => <<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>} [2026-07-09 13:14:08.280] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=1376.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:14:08.279455Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-09 13:14:13.282] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=347.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1725 [2026-07-09 13:14:17.930] [DEBUG] QUERY OK db=62.4ms queue=0.7ms idle=918.2ms SELECT count(s0.`terminal_id`) FROM (SELECT DISTINCT st0.`terminal_id` AS `terminal_id` FROM `tms_terminal_status_logs` AS st0 WHERE ((st0.`inserted_at` >= ?) AND (st0.`inserted_at` <= ?))) AS s0 [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1731 [2026-07-09 13:14:17.932] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.4ms idle=971.6ms SELECT t0.`status`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`status` [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1742 [2026-07-09 13:14:17.933] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=2.0ms SELECT t0.`model`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`model` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1749 [2026-07-09 13:14:17.934] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=1.3ms SELECT t0.`vendor`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`vendor` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1755 [2026-07-09 13:14:17.935] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1760 [2026-07-09 13:14:17.936] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=1.1ms SELECT DATE(t0.`inserted_at`), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1781 [2026-07-09 13:14:17.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.2ms queue=0.3ms idle=1.1ms SELECT DATE(t0.`inserted_at`), COUNT(DISTINCT t0.`terminal_id`), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1794 [2026-07-09 13:14:17.957] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=4.0ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1797 [2026-07-09 13:14:17.957] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=1.8ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1798 [2026-07-09 13:14:17.958] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=1.1ms SELECT t0.`area`, count(t0.`id`), sum(CASE WHEN t0.`status` IN ('online', 'Online', 'connected') THEN 1 ELSE 0 END) FROM `tms_terminals` AS t0 WHERE (NOT (t0.`area` IS NULL)) GROUP BY t0.`area` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_geographic_analytics/3, at: lib/tms_core/terminal_management.ex:1825 [2026-07-09 13:14:17.959] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.3ms idle=1.1ms SELECT o0.`status`, count(o0.`id`) FROM `ota_configurations` AS o0 WHERE ((o0.`sent_at` >= ?) AND (o0.`sent_at` <= ?)) GROUP BY o0.`status` [~U[2026-06-09 13:14:13Z], ~U[2026-07-09 13:14:13Z]] ↳ TmsCore.TerminalManagement.get_ota_update_analytics/2, at: lib/tms_core/terminal_management.ex:2078 [2026-07-09 13:14:17.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms queue=0.2ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:13], ~N[2026-07-09 13:14:13]] ↳ TmsCore.TerminalManagement.get_system_health_analytics/2, at: lib/tms_core/terminal_management.ex:2099 [2026-07-09 13:14:18.028] [DEBUG] QUERY OK source="tms_terminals" db=56.2ms idle=12.7ms 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.AnalyticsLive.load_analytics_data/1, at: lib/platform_web/live/analytics_live.ex:145 [2026-07-09 13:14:18.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=30.7ms queue=0.5ms idle=61.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=36.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.071] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.4ms idle=5.7ms 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` [43039] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=36.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.113] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.1ms idle=4.9ms 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` [43758] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.120] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms idle=2.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` = ?) ORDER BY t0.`status_log_id` [24538] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.122] [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 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.123] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=1.1ms 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` [6171] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.126] [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 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.127] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.8ms idle=1.0ms 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` [5453] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.128] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.131] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.9ms 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` [5486] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.132] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.133] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.9ms 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` [7335] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.135] [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 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.136] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [5495] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.136] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.137] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.138] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [5499] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=13.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.153] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.9ms 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` [15230] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.1ms 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 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.181] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.1ms idle=3.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` [46823] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.183] [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 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.184] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.0ms 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` [5539] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.214] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=29.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` = ?) ORDER BY t0.`status_log_id` [39753] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.229] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=0.1ms idle=11.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.229] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=3.5ms 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` [23998] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.242] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.245] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [43358] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.245] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.246] [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 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.248] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.6ms queue=0.3ms idle=0.7ms 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` [6790] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.250] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.250] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=0.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` [13926] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=423.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.676] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.0ms idle=423.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` [38945] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.680] [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 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.681] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.5ms 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` [8788] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.681] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.682] [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 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.683] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.1ms 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` [8760] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.2ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms 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 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.700] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms queue=0.1ms idle=1.9ms 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` [46824] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [26] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.718] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.7ms 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` [28095] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.720] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.721] [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 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.723] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms idle=1.0ms 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` [14055] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=138.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.863] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=139.1ms 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` [36748] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.864] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.865] [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 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.866] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.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` [15146] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.871] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.6ms idle=1.4ms 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` [18630] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.944] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=72.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=72.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.952] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=7.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` [22345] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.952] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.953] [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 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.954] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.1ms 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` [21561] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.3ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.983] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.7ms queue=0.1ms idle=4.1ms 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` [25674] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:18.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=16.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.004] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.1ms idle=4.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` = ?) ORDER BY t0.`status_log_id` [40151] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms queue=0.1ms idle=11.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.023] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.6ms queue=0.1ms idle=6.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` = ?) ORDER BY t0.`status_log_id` [30717] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=53.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=54.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.087] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms idle=8.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` = ?) ORDER BY t0.`status_log_id` [41532] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.095] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms idle=1.7ms 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` [21678] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms 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 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.101] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.8ms idle=2.7ms 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` [24914] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=14.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.117] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.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` [34584] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.122] [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 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.124] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.3ms idle=3.0ms 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` [32283] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.131] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.8ms idle=2.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` = ?) ORDER BY t0.`status_log_id` [41580] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.139] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=6.0ms 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` [33445] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.141] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms idle=0.9ms 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` [37565] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.144] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.147] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms idle=1.0ms 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` [41285] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.154] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.2ms idle=3.9ms 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` [41238] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.164] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms idle=8.1ms 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` [46441] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.164] [DEBUG] Replied in 15887ms [2026-07-09 13:14:19.164] [DEBUG] HANDLE PARAMS in PlatformWeb.AnalyticsLive Parameters: %{} [2026-07-09 13:14:19.167] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1725 [2026-07-09 13:14:19.225] [DEBUG] QUERY OK db=57.8ms queue=0.1ms idle=3.7ms SELECT count(s0.`terminal_id`) FROM (SELECT DISTINCT st0.`terminal_id` AS `terminal_id` FROM `tms_terminal_status_logs` AS st0 WHERE ((st0.`inserted_at` >= ?) AND (st0.`inserted_at` <= ?))) AS s0 [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1731 [2026-07-09 13:14:19.226] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=58.5ms SELECT t0.`status`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`status` [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1742 [2026-07-09 13:14:19.227] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.0ms SELECT t0.`model`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`model` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1749 [2026-07-09 13:14:19.228] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=0.9ms SELECT t0.`vendor`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`vendor` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1755 [2026-07-09 13:14:19.228] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1760 [2026-07-09 13:14:19.229] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.6ms SELECT DATE(t0.`inserted_at`), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1781 [2026-07-09 13:14:19.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.6ms idle=0.8ms SELECT DATE(t0.`inserted_at`), COUNT(DISTINCT t0.`terminal_id`), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1794 [2026-07-09 13:14:19.248] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=18.4ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1797 [2026-07-09 13:14:19.249] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.6ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1798 [2026-07-09 13:14:19.250] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.0ms SELECT t0.`area`, count(t0.`id`), sum(CASE WHEN t0.`status` IN ('online', 'Online', 'connected') THEN 1 ELSE 0 END) FROM `tms_terminals` AS t0 WHERE (NOT (t0.`area` IS NULL)) GROUP BY t0.`area` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_geographic_analytics/3, at: lib/tms_core/terminal_management.ex:1825 [2026-07-09 13:14:19.251] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.1ms idle=0.9ms SELECT o0.`status`, count(o0.`id`) FROM `ota_configurations` AS o0 WHERE ((o0.`sent_at` >= ?) AND (o0.`sent_at` <= ?)) GROUP BY o0.`status` [~U[2026-06-09 13:14:19Z], ~U[2026-07-09 13:14:19Z]] ↳ TmsCore.TerminalManagement.get_ota_update_analytics/2, at: lib/tms_core/terminal_management.ex:2078 [2026-07-09 13:14:19.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.3ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:19], ~N[2026-07-09 13:14:19]] ↳ TmsCore.TerminalManagement.get_system_health_analytics/2, at: lib/tms_core/terminal_management.ex:2099 [2026-07-09 13:14:19.320] [DEBUG] QUERY OK source="tms_terminals" db=57.4ms queue=0.1ms idle=11.9ms 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.AnalyticsLive.load_analytics_data/1, at: lib/platform_web/live/analytics_live.ex:145 [2026-07-09 13:14:19.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.9ms idle=58.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=34.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.363] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=7.4ms 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` [43039] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.2ms queue=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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.5ms idle=36.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.405] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms idle=5.4ms 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` [43758] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.410] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.414] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms queue=0.1ms idle=2.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` = ?) ORDER BY t0.`status_log_id` [24538] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.419] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=1.0ms 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` [6171] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.420] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.422] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=1.7ms 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` [5453] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.423] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.424] [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 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.425] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [5486] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.426] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.427] [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 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.428] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=1.4ms 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` [7335] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.429] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.431] [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 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.431] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.1ms idle=1.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` [5495] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.432] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.433] [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 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.435] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=0.9ms 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` [5499] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.5ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.454] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.1ms idle=2.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` [15230] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=23.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.482] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=4.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` [46823] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.483] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.484] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.7ms 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` [5539] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.526] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.7ms idle=40.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` [39753] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=15.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.546] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=4.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` = ?) ORDER BY t0.`status_log_id` [23998] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=18.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.567] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=2.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` [43358] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.568] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.568] [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 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.570] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms idle=0.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` [6790] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.571] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.572] [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 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:19.572] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.0ms 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` [13926] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=517.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.092] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=133.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` [38945] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.094] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.095] [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 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.095] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.1ms 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` [8788] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.096] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.100] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.1ms idle=3.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` = ?) ORDER BY t0.`status_log_id` [8760] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.112] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.118] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.1ms idle=4.4ms 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` [46824] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=19.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.142] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=4.0ms 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` [28095] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.144] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.146] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.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` = ?) ORDER BY t0.`status_log_id` [14055] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=134.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.284] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.7ms queue=0.1ms idle=134.9ms 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` [36748] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.286] [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 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.287] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.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` [15146] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.288] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.291] [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 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.292] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.1ms idle=2.7ms 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` [18630] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=68.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.367] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.1ms idle=69.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.368] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms idle=6.9ms 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` [22345] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.369] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.371] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=0.9ms 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` [21561] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.399] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=3.5ms 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` [25674] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.415] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=2.4ms 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` [40151] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.422] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.424] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms idle=1.4ms 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` [30717] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=41.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=42.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.471] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.3ms idle=3.9ms 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` [41532] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.472] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.473] [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 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.475] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.7ms 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` [21678] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.478] [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 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.478] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.1ms idle=0.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` [24914] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.487] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=2.0ms 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` [34584] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.488] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.489] [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 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.490] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.0ms 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` [32283] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.492] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.492] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.9ms 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` [41580] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.493] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.493] [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 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.494] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.7ms 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` [33445] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.495] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.495] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [37565] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.498] [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 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.499] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.9ms 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` [41285] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.500] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.501] [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 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.502] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.5ms idle=0.7ms 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` [41238] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.506] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=3.4ms 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` [46441] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:20.506] [DEBUG] Replied in 1342ms [2026-07-09 13:14:21.319] [INFO ] GET /analytics [2026-07-09 13:14:21.319] [DEBUG] Processing with PlatformWeb.AnalyticsLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-09 13:14:21.321] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=1417.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:14:21.320004Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 13:14:21.322] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=815.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1725 [2026-07-09 13:14:21.376] [DEBUG] QUERY OK db=53.5ms idle=361.6ms SELECT count(s0.`terminal_id`) FROM (SELECT DISTINCT st0.`terminal_id` AS `terminal_id` FROM `tms_terminal_status_logs` AS st0 WHERE ((st0.`inserted_at` >= ?) AND (st0.`inserted_at` <= ?))) AS s0 [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1731 [2026-07-09 13:14:21.378] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=54.9ms SELECT t0.`status`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`status` [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1742 [2026-07-09 13:14:21.381] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=1.8ms idle=2.4ms SELECT t0.`model`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`model` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1749 [2026-07-09 13:14:21.383] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=3.7ms SELECT t0.`vendor`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`vendor` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1755 [2026-07-09 13:14:21.383] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1760 [2026-07-09 13:14:21.385] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=0.7ms SELECT DATE(t0.`inserted_at`), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1781 [2026-07-09 13:14:21.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=1.3ms SELECT DATE(t0.`inserted_at`), COUNT(DISTINCT t0.`terminal_id`), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1794 [2026-07-09 13:14:21.406] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=19.7ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1797 [2026-07-09 13:14:21.407] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.4ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1798 [2026-07-09 13:14:21.408] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=1.4ms SELECT t0.`area`, count(t0.`id`), sum(CASE WHEN t0.`status` IN ('online', 'Online', 'connected') THEN 1 ELSE 0 END) FROM `tms_terminals` AS t0 WHERE (NOT (t0.`area` IS NULL)) GROUP BY t0.`area` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_geographic_analytics/3, at: lib/tms_core/terminal_management.ex:1825 [2026-07-09 13:14:21.409] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.3ms SELECT o0.`status`, count(o0.`id`) FROM `ota_configurations` AS o0 WHERE ((o0.`sent_at` >= ?) AND (o0.`sent_at` <= ?)) GROUP BY o0.`status` [~U[2026-06-09 13:14:21Z], ~U[2026-07-09 13:14:21Z]] ↳ TmsCore.TerminalManagement.get_ota_update_analytics/2, at: lib/tms_core/terminal_management.ex:2078 [2026-07-09 13:14:21.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.4ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:21], ~N[2026-07-09 13:14:21]] ↳ TmsCore.TerminalManagement.get_system_health_analytics/2, at: lib/tms_core/terminal_management.ex:2099 [2026-07-09 13:14:21.486] [DEBUG] QUERY OK source="tms_terminals" db=55.1ms idle=21.8ms 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.AnalyticsLive.load_analytics_data/1, at: lib/platform_web/live/analytics_live.ex:145 [2026-07-09 13:14:21.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.1ms idle=56.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.8ms queue=0.2ms 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 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.524] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms idle=11.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` = ?) ORDER BY t0.`status_log_id` [43039] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=24.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.556] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms idle=6.9ms 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` [43758] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.561] [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 [3] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.562] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=1.7ms 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` [24538] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.567] [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 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.567] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.9ms 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` [6171] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.568] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.569] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.569] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.7ms 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` [5453] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.570] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.570] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.571] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=0.7ms 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` [5486] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.572] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.573] [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 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.574] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [7335] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.576] [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 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.577] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.2ms idle=1.0ms 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` [5495] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.580] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=1.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` = ?) ORDER BY t0.`status_log_id` [5499] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.592] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.595] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=1.9ms 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` [15230] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=19.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.618] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=3.7ms 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` [46823] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.618] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.619] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.620] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.7ms 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` [5539] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.647] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=27.1ms 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` [39753] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.665] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms idle=4.5ms 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` [23998] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=16.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.685] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.1ms idle=3.9ms 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` [43358] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.687] [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 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.688] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=0.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` [6790] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.689] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.690] [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 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.690] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [13926] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=286.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.978] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms idle=11.7ms 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` [38942] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.981] [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 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.982] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=1.1ms 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` [8788] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.983] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.984] [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 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:21.985] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.1ms idle=1.0ms 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` [8760] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.007] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=4.1ms 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` [46824] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=30.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.040] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=30.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.040] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.9ms 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` [28095] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.043] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.045] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.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` [14055] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=168.6ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.215] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=122.1ms 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` [36748] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.216] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.217] [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 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.218] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.0ms 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` [15146] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.219] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.220] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.223] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.0ms idle=0.7ms 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` [18630] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=78.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=79.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.309] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=6.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` = ?) ORDER BY t0.`status_log_id` [22345] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.310] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.311] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.2ms idle=0.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` [21561] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=24.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.340] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=3.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` = ?) ORDER BY t0.`status_log_id` [25674] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.348] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.348] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [40151] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.354] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.355] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=1.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` [30717] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=37.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.397] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=3.9ms 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` [41532] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=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 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.403] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.6ms idle=1.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` [21678] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.410] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.413] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.2ms idle=2.4ms 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` [24914] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.426] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.427] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.1ms idle=2.5ms 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` [34584] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.431] [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 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.434] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.4ms idle=2.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` [32283] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.436] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.437] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=2.9ms 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` [41580] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.439] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.441] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=1.5ms 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` [33445] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.442] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.443] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=1.1ms 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` [37565] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=1.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 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.448] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=2.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` = ?) ORDER BY t0.`status_log_id` [41285] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.452] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.1ms idle=1.1ms 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` [41238] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.459] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms idle=5.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` = ?) ORDER BY t0.`status_log_id` [46441] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.460] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1725 [2026-07-09 13:14:22.510] [DEBUG] QUERY OK db=49.9ms idle=1.0ms SELECT count(s0.`terminal_id`) FROM (SELECT DISTINCT st0.`terminal_id` AS `terminal_id` FROM `tms_terminal_status_logs` AS st0 WHERE ((st0.`inserted_at` >= ?) AND (st0.`inserted_at` <= ?))) AS s0 [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1731 [2026-07-09 13:14:22.511] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=50.5ms SELECT t0.`status`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`status` [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1742 [2026-07-09 13:14:22.512] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.3ms SELECT t0.`model`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`model` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1749 [2026-07-09 13:14:22.514] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=0.8ms SELECT t0.`vendor`, count(t0.`id`) FROM `tms_terminals` AS t0 GROUP BY t0.`vendor` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1755 [2026-07-09 13:14:22.515] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_summary_analytics/2, at: lib/tms_core/terminal_management.ex:1760 [2026-07-09 13:14:22.516] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.1ms SELECT DATE(t0.`inserted_at`), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1781 [2026-07-09 13:14:22.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.9ms queue=0.1ms idle=1.3ms SELECT DATE(t0.`inserted_at`), COUNT(DISTINCT t0.`terminal_id`), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY DATE(t0.`inserted_at`) ORDER BY DATE(t0.`inserted_at`) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1794 [2026-07-09 13:14:22.536] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=19.8ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-W', LPAD(WEEK(t0.`inserted_at`, 1), 2, '0')) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1797 [2026-07-09 13:14:22.537] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=1.4ms SELECT CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')), count(t0.`id`) FROM `tms_terminals` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) GROUP BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) ORDER BY CONCAT(YEAR(t0.`inserted_at`), '-', LPAD(MONTH(t0.`inserted_at`), 2, '0')) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_device_trend_analytics/2, at: lib/tms_core/terminal_management.ex:1798 [2026-07-09 13:14:22.538] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=0.8ms SELECT t0.`area`, count(t0.`id`), sum(CASE WHEN t0.`status` IN ('online', 'Online', 'connected') THEN 1 ELSE 0 END) FROM `tms_terminals` AS t0 WHERE (NOT (t0.`area` IS NULL)) GROUP BY t0.`area` ORDER BY count(t0.`id`) DESC [] ↳ TmsCore.TerminalManagement.get_geographic_analytics/3, at: lib/tms_core/terminal_management.ex:1825 [2026-07-09 13:14:22.539] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms queue=0.1ms idle=1.3ms SELECT o0.`status`, count(o0.`id`) FROM `ota_configurations` AS o0 WHERE ((o0.`sent_at` >= ?) AND (o0.`sent_at` <= ?)) GROUP BY o0.`status` [~U[2026-06-09 13:14:22Z], ~U[2026-07-09 13:14:22Z]] ↳ TmsCore.TerminalManagement.get_ota_update_analytics/2, at: lib/tms_core/terminal_management.ex:2078 [2026-07-09 13:14:22.546] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:14:22.547] [INFO ] Incoming JSON payload: {"oid":"f0fa2c1b-fef2-4fde-95a4-4796665ec3e9","sn":"98251226730001","uploadTime":"2026-07-09T21:17:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:17:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:17: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:14:22.548] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f0fa2c1b-fef2-4fde-95a4-4796665ec3e9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:17:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:17:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:17:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:17:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:17:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:17:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:17:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:17: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:17:30Z", "vendor" => "morefun"} [2026-07-09 13:14:22.548] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:14:22.548] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:14:22.548] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:14:22.549] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:14:22.550] [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-07-09 13:14:22.550] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:14:22.554] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=3.0ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:14:22.554] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:14:22.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.0ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE ((t0.`inserted_at` >= ?) AND (t0.`inserted_at` <= ?)) [~N[2026-06-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ TmsCore.TerminalManagement.get_system_health_analytics/2, at: lib/tms_core/terminal_management.ex:2099 [2026-07-09 13:14:22.592] [DEBUG] QUERY OK source="tms_terminals" db=37.8ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:14:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:14:22.592] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:14:22.593] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:14:22.617] [DEBUG] QUERY OK source="tms_terminals" db=59.7ms idle=0.3ms 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.AnalyticsLive.load_analytics_data/1, at: lib/platform_web/live/analytics_live.ex:145 [2026-07-09 13:14:22.632] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:14:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:14:22.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.8ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.649] [DEBUG] QUERY OK db=16.0ms idle=0.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f0fa2c1b-fef2-4fde-95a4-4796665ec3e9", "2026-07-09T21:17:30Z", ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:14:22.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [1] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.652] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46826, oid: "f0fa2c1b-fef2-4fde-95a4-4796665ec3e9", upload_time: "2026-07-09T21:17:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]} [2026-07-09 13:14:22.652] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:17:30Z", "value" => "morefun"} [2026-07-09 13:14:22.652] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.1ms idle=2.9ms 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` [43039] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.670] [DEBUG] QUERY OK db=17.7ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "morefun", "vendor", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401300, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.671] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:17:30Z", "value" => "kiosk_launcher"} [2026-07-09 13:14:22.686] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=0.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 [2] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.693] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.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` [43758] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.696] [DEBUG] QUERY OK db=25.4ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "kiosk_launcher", "model", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401301, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.697] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:17:30Z", "value" => "1.0"} [2026-07-09 13:14:22.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.704] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=0.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` [24538] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.709] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=0.1ms 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` [6171] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.711] [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 [5] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.712] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.1ms 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` [5453] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.713] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.714] [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 [6] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.714] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.5ms 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` [5486] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.715] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.717] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.3ms idle=0.1ms 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` [7335] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.718] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.719] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.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 [8] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.720] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [5495] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.720] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.721] [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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.722] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.2ms idle=0.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` = ?) ORDER BY t0.`status_log_id` [5499] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.740] [DEBUG] QUERY OK db=42.7ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "1.0", "app_version", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401302, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.741] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:17:30Z", "value" => "13"} [2026-07-09 13:14:22.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [10] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.746] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=0.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` [15230] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.761] [DEBUG] QUERY OK db=17.8ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "13", "android_version", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401303, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.763] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "913"} [2026-07-09 13:14:22.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=30.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.781] [DEBUG] QUERY OK db=16.9ms queue=0.1ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "913", "ram_free_mb", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401304, itemkey: "ram_free_mb", value: "913", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.781] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:17:30Z", "value" => "WIFI"} [2026-07-09 13:14:22.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [11] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.789] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.0ms idle=0.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` [46823] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.791] [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 [12] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.792] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms idle=0.1ms 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` [5539] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.803] [DEBUG] QUERY OK db=21.7ms queue=0.1ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "WIFI", "network_type", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401305, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.804] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:17:30Z", "value" => "true"} [2026-07-09 13:14:22.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=41.4ms queue=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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.835] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "true", "kiosk_active", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401306, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.837] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.0ms idle=0.7ms 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` [39753] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.837] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:17:30Z", "value" => ""} [2026-07-09 13:14:22.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.864] [DEBUG] QUERY OK db=25.1ms idle=1.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:17:30Z", "sim_operator", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401307, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.864] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"} [2026-07-09 13:14:22.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.3ms queue=1.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.877] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.1ms idle=0.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` = ?) ORDER BY t0.`status_log_id` [23998] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.883] [DEBUG] QUERY OK db=18.3ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "UNKNOWN", "sim_number", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401308, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.884] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"} [2026-07-09 13:14:22.907] [DEBUG] QUERY OK db=20.4ms queue=0.6ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "UNKNOWN", "sim_iccid", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401309, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.907] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"} [2026-07-09 13:14:22.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=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 [15] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.919] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.0ms queue=0.1ms idle=0.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` [43358] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 [16] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.933] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms queue=0.2ms idle=0.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` = ?) ORDER BY t0.`status_log_id` [6790] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 [18] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.941] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms queue=0.1ms idle=0.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` = ?) ORDER BY t0.`status_log_id` [13926] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:22.941] [DEBUG] QUERY OK db=31.7ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "UNKNOWN", "sim_imsi", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401310, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.941] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"} [2026-07-09 13:14:22.966] [DEBUG] QUERY OK db=24.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "UNKNOWN", "sim_iccid2", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401311, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.967] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:17:30Z", "value" => "UNKNOWN"} [2026-07-09 13:14:22.981] [DEBUG] QUERY OK db=14.3ms queue=0.2ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "UNKNOWN", "sim_imsi2", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:22.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401312, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:22.983] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "11"} [2026-07-09 13:14:23.003] [DEBUG] QUERY OK db=17.8ms queue=1.1ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "11", "data_usage_mb", 46826, ~N[2026-07-09 13:14:22], ~N[2026-07-09 13:14:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401313, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:22], updated_at: ~N[2026-07-09 13:14:22]}} [2026-07-09 13:14:23.003] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:17:30Z", "value" => "0"} [2026-07-09 13:14:23.032] [DEBUG] QUERY OK db=28.4ms queue=0.1ms idle=1.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17:30Z", "0", "mobile_data_mb", 46826, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401314, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.034] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:17: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:14:23.067] [DEBUG] QUERY OK db=31.1ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:17: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46826, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401315, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:17:30Z", message: nil, status_log_id: 46826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.069] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:14:23.069] [INFO ] Incoming JSON payload: {"oid":"01152600-582f-4c69-b9bb-4fe1bb73ab98","sn":"98250904730001","uploadTime":"2026-07-09T13:14:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:14:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:14:23.070] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "01152600-582f-4c69-b9bb-4fe1bb73ab98", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:14:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:14:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:14:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:14:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:14:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:14:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:14:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:14:22Z", "vendor" => "morefun"} [2026-07-09 13:14:23.070] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:14:23.071] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:14:23.071] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:14:23.073] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.1ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:14:23.075] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1.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-07-09 13:14:23.075] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:14:23.079] [DEBUG] QUERY OK source="tms_terminals" db=3.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.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:14:23.079] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:14:23.107] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms queue=0.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:14:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:14:23.107] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:14:23.108] [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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:14:23.122] [INFO ] GET /alerts [2026-07-09 13:14:23.124] [DEBUG] Processing with PlatformWeb.AlertsLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-09 13:14:23.128] [DEBUG] QUERY OK source="users_tokens" db=2.7ms queue=0.1ms idle=218.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:14:23.124871Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-09 13:14:23.158] [DEBUG] QUERY OK source="tms_terminals" db=49.5ms queue=0.1ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:14:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:14:23.233] [DEBUG] QUERY OK source="tms_terminals" db=74.4ms queue=17.6ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.140647Z], ~U[2026-07-09 12:44:23.140647Z], ~U[2026-07-09 12:14:23.140647Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=318.0ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.262] [DEBUG] QUERY OK db=29.5ms queue=74.1ms idle=0.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "01152600-582f-4c69-b9bb-4fe1bb73ab98", "2026-07-09T13:14:22Z", ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:14:23.262] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46827, oid: "01152600-582f-4c69-b9bb-4fe1bb73ab98", upload_time: "2026-07-09T13:14:22Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]} [2026-07-09 13:14:23.262] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:14:22Z", "value" => "morefun"} [2026-07-09 13:14:23.263] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=3.0ms idle=0.0ms 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` [38942] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.0ms queue=26.4ms idle=0.0ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:14:23.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=7.1ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.6ms queue=2.0ms idle=0.0ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:13:23]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:14:23.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=12.1ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.0ms queue=0.6ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:14:23.299] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=11.2ms idle=0.0ms 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` [8788] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.302] [DEBUG] QUERY OK db=38.3ms queue=0.5ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "morefun", "vendor", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401316, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.302] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:14:22Z", "value" => "kiosk_launcher"} [2026-07-09 13:14:23.303] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms queue=0.6ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:14:23.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=7.5ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.3ms queue=0.5ms idle=0.0ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:14:23.325] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.7ms queue=11.7ms idle=0.0ms 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` [8760] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.326] [DEBUG] QUERY OK db=22.8ms queue=0.5ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "kiosk_launcher", "model", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401317, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.326] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:14:22Z", "value" => "1.0"} [2026-07-09 13:14:23.327] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=2.0ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:14:23.347] [DEBUG] QUERY OK db=20.0ms queue=0.5ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "1.0", "app_version", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401318, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.347] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:14:22Z", "value" => "13"} [2026-07-09 13:14:23.349] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.0ms queue=0.1ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [23] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.378] [DEBUG] QUERY OK db=24.1ms queue=2.9ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "13", "android_version", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401319, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.380] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "1082"} [2026-07-09 13:14:23.380] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=25.6ms idle=0.0ms 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` [46827] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.403] [DEBUG] QUERY OK source="tms_terminals" db=54.6ms queue=21.6ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.327171Z], ~U[2026-07-09 12:44:23.327171Z], ~U[2026-07-09 12:14:23.327171Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.415] [DEBUG] QUERY OK db=33.8ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "1082", "ram_free_mb", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401320, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.416] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:14:22Z", "value" => "WIFI"} [2026-07-09 13:14:23.422] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.0ms queue=21.1ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.441] [DEBUG] QUERY OK db=18.6ms queue=6.6ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "WIFI", "network_type", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401321, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.442] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:14:22Z", "value" => "true"} [2026-07-09 13:14:23.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms queue=18.8ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.463] [DEBUG] QUERY OK db=16.7ms queue=4.2ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "true", "kiosk_active", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401322, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.464] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:14:22Z", "value" => ""} [2026-07-09 13:14:23.465] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=17.3ms idle=0.0ms 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` [28095] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.477] [DEBUG] QUERY OK source="tms_terminals" db=62.4ms queue=10.6ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.403982Z], ~U[2026-07-09 12:44:23.403982Z], ~U[2026-07-09 12:14:23.403982Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=11.8ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.487] [DEBUG] QUERY OK db=22.3ms queue=0.6ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:14:22Z", "sim_operator", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401323, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.488] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"} [2026-07-09 13:14:23.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=41.9ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.538] [DEBUG] QUERY OK db=15.6ms queue=34.0ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "UNKNOWN", "sim_number", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401324, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.539] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=16.3ms idle=0.0ms 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` [14055] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.538] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"} [2026-07-09 13:14:23.543] [DEBUG] QUERY OK source="tms_terminals" db=55.7ms queue=10.0ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.477724Z], ~U[2026-07-09 12:44:23.477724Z], ~U[2026-07-09 12:14:23.477724Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.559] [DEBUG] QUERY OK db=19.4ms idle=0.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "UNKNOWN", "sim_iccid", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401325, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.559] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"} [2026-07-09 13:14:23.626] [DEBUG] QUERY OK source="tms_terminals" db=66.0ms queue=16.0ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.543963Z], ~U[2026-07-09 12:44:23.543963Z], ~U[2026-07-09 12:14:23.543963Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.670] [DEBUG] QUERY OK db=44.2ms queue=66.2ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "UNKNOWN", "sim_imsi", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401326, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.671] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"} [2026-07-09 13:14:23.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=153.5ms queue=2.7ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.710] [DEBUG] QUERY OK db=12.7ms queue=25.6ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "UNKNOWN", "sim_iccid2", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401327, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.710] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:14:22Z", "value" => "UNKNOWN"} [2026-07-09 13:14:23.713] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.0ms queue=13.0ms idle=0.0ms 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` [36748] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.724] [DEBUG] QUERY OK source="tms_terminals" db=52.6ms queue=44.4ms idle=0.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.626921Z], ~U[2026-07-09 12:44:23.626921Z], ~U[2026-07-09 12:14:23.626921Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=9.9ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.733] [DEBUG] QUERY OK db=19.1ms queue=3.3ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "UNKNOWN", "sim_imsi2", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401328, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.733] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "29"} [2026-07-09 13:14:23.734] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=7.9ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.2ms queue=0.7ms idle=0.0ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:14:23.738] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=2.4ms idle=0.0ms 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` [15146] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms queue=0.4ms idle=0.0ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:13:23]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:14:23.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=10.0ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms queue=1.8ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:14:23.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=11.7ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.769] [DEBUG] QUERY OK db=34.2ms queue=0.4ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "29", "data_usage_mb", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401329, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.769] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:14:22Z", "value" => "0"} [2026-07-09 13:14:23.770] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.3ms queue=5.1ms idle=0.0ms 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` [18630] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.775] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.3ms queue=0.9ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:14:23.794] [DEBUG] QUERY OK db=23.5ms queue=1.2ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:22Z", "0", "mobile_data_mb", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401330, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.795] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:14:23.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.2ms queue=18.8ms idle=0.0ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:23]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:14:23.826] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=16.5ms idle=0.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:14:23.827] [DEBUG] QUERY OK db=16.5ms queue=12.8ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46827, ~N[2026-07-09 13:14:23], ~N[2026-07-09 13:14:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:23.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401331, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:14:22Z", message: nil, status_log_id: 46827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:23], updated_at: ~N[2026-07-09 13:14:23]}} [2026-07-09 13:14:23.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=81.6ms queue=4.8ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms queue=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.866] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=0.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` [22345] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.867] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.868] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.1ms 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` [21561] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.888] [DEBUG] QUERY OK source="tms_terminals" db=61.0ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.826685Z], ~U[2026-07-09 12:44:23.826685Z], ~U[2026-07-09 12:14:23.826685Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.899] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms idle=0.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` [25674] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [43] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.912] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [40151] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [44] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.922] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.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` [30717] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.947] [DEBUG] QUERY OK source="tms_terminals" db=59.2ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.888468Z], ~U[2026-07-09 12:44:23.888468Z], ~U[2026-07-09 12:14:23.888468Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:23.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=48.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.979] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms idle=1.4ms 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` [41532] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [46] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.983] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.5ms 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` [21678] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=2.4ms idle=0.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.991] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.3ms idle=0.4ms 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` [24914] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:23.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.001] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=0.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` [34584] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.003] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.005] [DEBUG] QUERY OK source="tms_terminals" db=56.5ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:23.948248Z], ~U[2026-07-09 12:44:23.948248Z], ~U[2026-07-09 12:14:23.948248Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:24.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [49] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.006] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=1.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` [32283] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.013] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms idle=2.1ms 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` [41580] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.016] [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 [53] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.016] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=0.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` [33445] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.017] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.018] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms idle=0.1ms 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` [37565] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [60] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.024] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms idle=0.1ms 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` [41285] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.026] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.027] [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 [61] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.028] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.3ms idle=0.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` [41238] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.033] [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 INNER JOIN `tms_terminal_status_items` AS t1 ON t1.`status_log_id` = t0.`id` WHERE ((t0.`terminal_id` = ?) AND t1.`itemkey` IN ('latitude','longitude')) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.034] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms idle=0.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` [46441] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:550 [2026-07-09 13:14:24.036] [INFO ] Sent 200 in 2717ms [2026-07-09 13:14:24.057] [DEBUG] QUERY OK source="tms_terminals" db=51.5ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:24.005206Z], ~U[2026-07-09 12:44:24.005206Z], ~U[2026-07-09 12:14:24.005206Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:24.060] [INFO ] Sent 200 in 938ms [2026-07-09 13:14:25.313] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "UTgzHQUGE2EALQUNZSZmVBYGIAwWBz066jaJMMD7KcLOSM2fBOjOeDro", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4059/assets/app.css", "1" => "http://demo.ctrmv.com:4059/assets/app.js"}, "vsn" => "2.0.0"} [2026-07-09 13:14:25.534] [DEBUG] MOUNT PlatformWeb.AlertsLive Parameters: %{} Session: %{"_csrf_token" => "gRRWHKWVKNIB6kT2TIJCsCOU", "live_socket_id" => "users_sessions:1_3-m4Syu0yqYEcT2OpIqGkCk_oufbj97P6krg81ugg=", "user_token" => <<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>} [2026-07-09 13:14:25.535] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=627.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:14:25.534562Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-09 13:14:25.597] [DEBUG] QUERY OK source="tms_terminals" db=61.4ms idle=1479.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.535942Z], ~U[2026-07-09 12:44:25.535942Z], ~U[2026-07-09 12:14:25.535942Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:25.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.7ms idle=605.2ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:14:25]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:14:25.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.5ms idle=26.7ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:13:25]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:14:25.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.2ms queue=0.1ms idle=15.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:25]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:14:25.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.5ms queue=0.1ms idle=19.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:25]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:14:25.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.4ms queue=0.1ms idle=16.3ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:25]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:14:25.700] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=26.2ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:14:25.803] [DEBUG] QUERY OK source="tms_terminals" db=102.6ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.700685Z], ~U[2026-07-09 12:44:25.700685Z], ~U[2026-07-09 12:14:25.700685Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:25.855] [DEBUG] QUERY OK source="tms_terminals" db=50.9ms idle=104.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.804337Z], ~U[2026-07-09 12:44:25.804337Z], ~U[2026-07-09 12:14:25.804337Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:25.917] [DEBUG] QUERY OK source="tms_terminals" db=60.8ms queue=0.2ms idle=52.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.855886Z], ~U[2026-07-09 12:44:25.855886Z], ~U[2026-07-09 12:14:25.855886Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:25.975] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms idle=62.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.917611Z], ~U[2026-07-09 12:44:25.917611Z], ~U[2026-07-09 12:14:25.917611Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:25.975] [DEBUG] Replied in 441ms [2026-07-09 13:14:25.975] [DEBUG] HANDLE PARAMS in PlatformWeb.AlertsLive Parameters: %{} [2026-07-09 13:14:26.030] [DEBUG] QUERY OK source="tms_terminals" db=54.7ms idle=58.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:25.975902Z], ~U[2026-07-09 12:44:25.975902Z], ~U[2026-07-09 12:14:25.975902Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:26.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.0ms idle=36.0ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-07-09 12:14:26]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-09 13:14:26.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.2ms idle=13.9ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 13:13:26]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-09 13:14:26.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.0ms idle=13.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:26]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-09 13:14:26.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.6ms idle=13.8ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:26]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-09 13:14:26.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.0ms idle=15.4ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-09 12:14:26]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-09 13:14:26.103] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=16.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-07-09 13:14:26.160] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:26.103455Z], ~U[2026-07-09 12:44:26.103455Z], ~U[2026-07-09 12:14:26.103455Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:26.236] [DEBUG] QUERY OK source="tms_terminals" db=74.9ms idle=58.0ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:26.161091Z], ~U[2026-07-09 12:44:26.161091Z], ~U[2026-07-09 12:14:26.161091Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:26.293] [DEBUG] QUERY OK source="tms_terminals" db=56.1ms idle=76.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:26.236803Z], ~U[2026-07-09 12:44:26.236803Z], ~U[2026-07-09 12:14:26.236803Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:26.351] [DEBUG] QUERY OK source="tms_terminals" db=57.4ms idle=57.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-09 13:09:26.293514Z], ~U[2026-07-09 12:44:26.293514Z], ~U[2026-07-09 12:14:26.293514Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-09 13:14:26.352] [DEBUG] Replied in 376ms [2026-07-09 13:14:30.709] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "gRRWHKWVKNIB6kT2TIJCsCOU", "live_socket_id" => "users_sessions:1_3-m4Syu0yqYEcT2OpIqGkCk_oufbj97P6krg81ugg=", "user_token" => <<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>} [2026-07-09 13:14:30.710] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1803.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)) [<<215, 253, 254, 155, 132, 178, 187, 76, 170, 96, 71, 19, 216, 234, 72, 168, 105, 2, 147, 250, 46, 125, 184, 253, 236, 254, 164, 174, 15, 53, 186, 8>>, "session", ~U[2026-07-09 13:14:30.709923Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-09 13:14:30.712] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=749.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-07-09 13:14:30.720] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=2.3ms idle=711.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-07-09 13:14:30.725] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=12.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-07-09 13:14:30.727] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.7ms idle=5.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) [42] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-07-09 13:14:30.727] [DEBUG] Replied in 17ms [2026-07-09 13:14:30.727] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-09 13:14:30.728] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-09 13:14:30.729] [DEBUG] Replied in 1ms [2026-07-09 13:14:52.654] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:14:52.655] [INFO ] Incoming JSON payload: {"oid":"27e91a4b-6c98-459d-9a2c-7058da2263fa","sn":"98251226730001","uploadTime":"2026-07-09T21:18:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:18:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:18: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.reso (truncated) [2026-07-09 13:14:52.656] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "27e91a4b-6c98-459d-9a2c-7058da2263fa", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:18:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:18:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:18:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:18:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:18:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:18:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:18:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:18: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-07-09T21:18:00Z", "vendor" => "morefun"} [2026-07-09 13:14:52.656] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:14:52.656] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:14:52.656] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:14:52.657] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=593.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-07-09 13:14:52.659] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=521.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-07-09 13:14:52.659] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:14:52.662] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:14:52.662] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:14:52.684] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:14:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:14:52.685] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:14:52.686] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=23.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:697 [2026-07-09 13:14:52.710] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:14:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:14:52.740] [DEBUG] QUERY OK db=29.5ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "27e91a4b-6c98-459d-9a2c-7058da2263fa", "2026-07-09T21:18:00Z", ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:14:52.740] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46828, oid: "27e91a4b-6c98-459d-9a2c-7058da2263fa", upload_time: "2026-07-09T21:18:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]} [2026-07-09 13:14:52.741] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:18:00Z", "value" => "morefun"} [2026-07-09 13:14:52.755] [DEBUG] QUERY OK db=13.2ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "morefun", "vendor", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401332, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.761] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:18:00Z", "value" => "kiosk_launcher"} [2026-07-09 13:14:52.784] [DEBUG] QUERY OK db=17.2ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "kiosk_launcher", "model", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401333, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.785] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:18:00Z", "value" => "1.0"} [2026-07-09 13:14:52.832] [DEBUG] QUERY OK db=46.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "1.0", "app_version", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401334, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.832] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:18:00Z", "value" => "13"} [2026-07-09 13:14:52.855] [DEBUG] QUERY OK db=22.6ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "13", "android_version", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401335, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.856] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "925"} [2026-07-09 13:14:52.880] [DEBUG] QUERY OK db=24.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "925", "ram_free_mb", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401336, itemkey: "ram_free_mb", value: "925", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.892] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:18:00Z", "value" => "WIFI"} [2026-07-09 13:14:52.912] [DEBUG] QUERY OK db=18.6ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "WIFI", "network_type", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401337, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.923] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:18:00Z", "value" => "true"} [2026-07-09 13:14:52.957] [DEBUG] QUERY OK db=33.7ms queue=0.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "true", "kiosk_active", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401338, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.957] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:18:00Z", "value" => ""} [2026-07-09 13:14:52.980] [DEBUG] QUERY OK db=22.5ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:18:00Z", "sim_operator", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401339, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.981] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"} [2026-07-09 13:14:52.994] [DEBUG] QUERY OK db=12.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "UNKNOWN", "sim_number", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:52.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401340, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:52.995] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.018] [DEBUG] QUERY OK db=22.3ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "UNKNOWN", "sim_iccid", 46828, ~N[2026-07-09 13:14:52], ~N[2026-07-09 13:14:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401341, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:52], updated_at: ~N[2026-07-09 13:14:52]}} [2026-07-09 13:14:53.018] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.044] [DEBUG] QUERY OK db=24.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "UNKNOWN", "sim_imsi", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401342, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.044] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.068] [DEBUG] QUERY OK db=23.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "UNKNOWN", "sim_iccid2", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401343, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:18:00Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.097] [DEBUG] QUERY OK db=28.3ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "UNKNOWN", "sim_imsi2", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401344, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.098] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "11"} [2026-07-09 13:14:53.121] [DEBUG] QUERY OK db=20.3ms queue=0.5ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "11", "data_usage_mb", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401345, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.122] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:18:00Z", "value" => "0"} [2026-07-09 13:14:53.147] [DEBUG] QUERY OK db=24.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:00Z", "0", "mobile_data_mb", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401346, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.148] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:18: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-07-09 13:14:53.174] [DEBUG] QUERY OK db=25.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18: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" <> ..., "installed_apps", 46828, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401347, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:18:00Z", message: nil, status_log_id: 46828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.182] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:14:53.183] [INFO ] Incoming JSON payload: {"oid":"4f9910ef-4873-45ca-bfa4-149a8d1d20e2","sn":"98250904730001","uploadTime":"2026-07-09T13:14:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"ram_free_mb","value":"1084","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:14:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:14:53.187] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:14:53.191] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4f9910ef-4873-45ca-bfa4-149a8d1d20e2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:14:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:14:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:14:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:14:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "1084"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:14:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:14:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:14:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:14:52Z", "vendor" => "morefun"} [2026-07-09 13:14:53.194] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:14:53.195] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:14:53.197] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:14:53.198] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:14:53.203] [DEBUG] QUERY OK source="parameter_templates" db=4.6ms idle=11.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-07-09 13:14:53.207] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:14:53.208] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:14:53.209] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:14:53.216] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:14:53.228] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms queue=0.1ms idle=13.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:14:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:14:53.228] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:14:53.230] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=19.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:14:53.264] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:14:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:14:53.290] [DEBUG] QUERY OK db=24.9ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "4f9910ef-4873-45ca-bfa4-149a8d1d20e2", "2026-07-09T13:14:52Z", ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:14:53.290] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46829, oid: "4f9910ef-4873-45ca-bfa4-149a8d1d20e2", upload_time: "2026-07-09T13:14:52Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]} [2026-07-09 13:14:53.290] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:14:52Z", "value" => "morefun"} [2026-07-09 13:14:53.313] [DEBUG] QUERY OK db=18.5ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "morefun", "vendor", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401348, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.313] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:14:52Z", "value" => "kiosk_launcher"} [2026-07-09 13:14:53.324] [DEBUG] QUERY OK db=10.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "kiosk_launcher", "model", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401349, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.325] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:14:52Z", "value" => "1.0"} [2026-07-09 13:14:53.354] [DEBUG] QUERY OK db=28.2ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "1.0", "app_version", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401350, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.355] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:14:52Z", "value" => "13"} [2026-07-09 13:14:53.389] [DEBUG] QUERY OK db=34.1ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "13", "android_version", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401351, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.390] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "1084"} [2026-07-09 13:14:53.405] [DEBUG] QUERY OK db=14.5ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "1084", "ram_free_mb", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401352, itemkey: "ram_free_mb", value: "1084", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.405] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:14:52Z", "value" => "WIFI"} [2026-07-09 13:14:53.420] [DEBUG] QUERY OK db=14.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "WIFI", "network_type", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401353, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.422] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:14:52Z", "value" => "true"} [2026-07-09 13:14:53.450] [DEBUG] QUERY OK db=27.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "true", "kiosk_active", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401354, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.450] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:14:52Z", "value" => ""} [2026-07-09 13:14:53.474] [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-07-09T13:14:52Z", "sim_operator", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401355, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.474] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.501] [DEBUG] QUERY OK db=25.4ms queue=0.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "UNKNOWN", "sim_number", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401356, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.519] [DEBUG] QUERY OK db=16.2ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "UNKNOWN", "sim_iccid", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401357, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.520] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.539] [DEBUG] QUERY OK db=18.4ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "UNKNOWN", "sim_imsi", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401358, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.540] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.575] [DEBUG] QUERY OK db=33.8ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "UNKNOWN", "sim_iccid2", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401359, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.577] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:14:52Z", "value" => "UNKNOWN"} [2026-07-09 13:14:53.605] [DEBUG] QUERY OK db=28.3ms queue=0.1ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "UNKNOWN", "sim_imsi2", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401360, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.606] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "29"} [2026-07-09 13:14:53.622] [DEBUG] QUERY OK db=16.0ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "29", "data_usage_mb", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401361, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.623] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:14:52Z", "value" => "0"} [2026-07-09 13:14:53.647] [DEBUG] QUERY OK db=24.3ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14:52Z", "0", "mobile_data_mb", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401362, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.650] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:14:53.691] [DEBUG] QUERY OK db=40.4ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:14: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46829, ~N[2026-07-09 13:14:53], ~N[2026-07-09 13:14:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:14:53.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401363, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:14:52Z", message: nil, status_log_id: 46829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:14:53], updated_at: ~N[2026-07-09 13:14:53]}} [2026-07-09 13:14:53.697] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=48.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:376 [2026-07-09 13:14:53.708] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:15:22.552] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:15:22.553] [INFO ] Incoming JSON payload: {"oid":"90c2f3b7-1e6e-4f0c-9e95-d3faf5eb0a45","sn":"98251226730001","uploadTime":"2026-07-09T21:18:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:18:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:18: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:15:22.554] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "90c2f3b7-1e6e-4f0c-9e95-d3faf5eb0a45", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:18:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:18:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:18:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:18:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:18:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:18:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:18:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:18: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:18:30Z", "vendor" => "morefun"} [2026-07-09 13:15:22.554] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:15:22.554] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:15:22.554] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:15:22.556] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=375.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-07-09 13:15:22.557] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=367.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-07-09 13:15:22.557] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:15:22.559] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:15:22.559] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:15:22.587] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:15:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:15:22.587] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:15:22.589] [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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:15:22.610] [DEBUG] QUERY OK source="tms_terminals" db=21.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:15:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:15:22.624] [DEBUG] QUERY OK db=13.0ms queue=0.1ms idle=21.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "90c2f3b7-1e6e-4f0c-9e95-d3faf5eb0a45", "2026-07-09T21:18:30Z", ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:15:22.624] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46830, oid: "90c2f3b7-1e6e-4f0c-9e95-d3faf5eb0a45", upload_time: "2026-07-09T21:18:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]} [2026-07-09 13:15:22.624] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:18:30Z", "value" => "morefun"} [2026-07-09 13:15:22.641] [DEBUG] QUERY OK db=16.3ms queue=0.4ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "morefun", "vendor", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401364, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.642] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:18:30Z", "value" => "kiosk_launcher"} [2026-07-09 13:15:22.665] [DEBUG] QUERY OK db=22.7ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "kiosk_launcher", "model", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401365, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.665] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:18:30Z", "value" => "1.0"} [2026-07-09 13:15:22.697] [DEBUG] QUERY OK db=30.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "1.0", "app_version", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401366, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.697] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:18:30Z", "value" => "13"} [2026-07-09 13:15:22.709] [DEBUG] QUERY OK db=11.2ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "13", "android_version", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401367, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.709] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "924"} [2026-07-09 13:15:22.722] [DEBUG] QUERY OK db=12.5ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "924", "ram_free_mb", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401368, itemkey: "ram_free_mb", value: "924", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.723] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:18:30Z", "value" => "WIFI"} [2026-07-09 13:15:22.749] [DEBUG] QUERY OK db=25.3ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "WIFI", "network_type", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401369, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.749] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:18:30Z", "value" => "true"} [2026-07-09 13:15:22.785] [DEBUG] QUERY OK db=35.0ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "true", "kiosk_active", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401370, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.785] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:18:30Z", "value" => ""} [2026-07-09 13:15:22.799] [DEBUG] QUERY OK db=13.8ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:18:30Z", "sim_operator", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401371, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.800] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"} [2026-07-09 13:15:22.812] [DEBUG] QUERY OK db=11.6ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "UNKNOWN", "sim_number", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401372, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.812] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"} [2026-07-09 13:15:22.823] [DEBUG] QUERY OK db=10.7ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "UNKNOWN", "sim_iccid", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401373, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.824] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"} [2026-07-09 13:15:22.853] [DEBUG] QUERY OK db=28.2ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "UNKNOWN", "sim_imsi", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401374, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.853] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"} [2026-07-09 13:15:22.888] [DEBUG] QUERY OK db=33.9ms queue=0.1ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "UNKNOWN", "sim_iccid2", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401375, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.888] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:18:30Z", "value" => "UNKNOWN"} [2026-07-09 13:15:22.900] [DEBUG] QUERY OK db=11.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "UNKNOWN", "sim_imsi2", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401376, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.900] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "11"} [2026-07-09 13:15:22.917] [DEBUG] QUERY OK db=16.7ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "11", "data_usage_mb", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401377, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.917] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:18:30Z", "value" => "0"} [2026-07-09 13:15:22.938] [DEBUG] QUERY OK db=19.5ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18:30Z", "0", "mobile_data_mb", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401378, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.938] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:18: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:15:22.973] [DEBUG] QUERY OK db=33.5ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:18: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46830, ~N[2026-07-09 13:15:22], ~N[2026-07-09 13:15:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:22.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401379, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:18:30Z", message: nil, status_log_id: 46830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:22], updated_at: ~N[2026-07-09 13:15:22]}} [2026-07-09 13:15:22.975] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:15:22.975] [INFO ] Incoming JSON payload: {"oid":"3e29d94d-2386-4929-984e-117ee9ee69d9","sn":"98250904730001","uploadTime":"2026-07-09T13:15:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:15:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:15:22.975] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3e29d94d-2386-4929-984e-117ee9ee69d9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:15:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:15:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:15:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:15:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:15:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:15:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:15:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:15:22Z", "vendor" => "morefun"} [2026-07-09 13:15:22.976] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:15:22.976] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:15:22.976] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:15:22.979] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:15:22.984] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=7.2ms 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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:15:22.986] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=6.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-07-09 13:15:22.986] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:15:22.989] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:15:22.992] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:15:22.997] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:15:23.006] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:15:22], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:15:23.006] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:15:23.008] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=18.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:15:23.027] [DEBUG] QUERY OK source="tms_terminals" db=18.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:15:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:15:23.061] [DEBUG] QUERY OK db=32.9ms queue=0.9ms idle=18.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "3e29d94d-2386-4929-984e-117ee9ee69d9", "2026-07-09T13:15:22Z", ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:15:23.061] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46831, oid: "3e29d94d-2386-4929-984e-117ee9ee69d9", upload_time: "2026-07-09T13:15:22Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]} [2026-07-09 13:15:23.061] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:15:22Z", "value" => "morefun"} [2026-07-09 13:15:23.085] [DEBUG] QUERY OK db=23.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "morefun", "vendor", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401380, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.087] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:15:22Z", "value" => "kiosk_launcher"} [2026-07-09 13:15:23.110] [DEBUG] QUERY OK db=22.2ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "kiosk_launcher", "model", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401381, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.110] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:15:22Z", "value" => "1.0"} [2026-07-09 13:15:23.184] [DEBUG] QUERY OK db=73.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "1.0", "app_version", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401382, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.185] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:15:22Z", "value" => "13"} [2026-07-09 13:15:23.210] [DEBUG] QUERY OK db=24.3ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "13", "android_version", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401383, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.210] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "1085"} [2026-07-09 13:15:23.248] [DEBUG] QUERY OK db=37.0ms queue=0.2ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "1085", "ram_free_mb", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401384, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.249] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:15:22Z", "value" => "WIFI"} [2026-07-09 13:15:23.272] [DEBUG] QUERY OK db=22.3ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "WIFI", "network_type", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401385, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.273] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:15:22Z", "value" => "true"} [2026-07-09 13:15:23.310] [DEBUG] QUERY OK db=36.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "true", "kiosk_active", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401386, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.310] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:15:22Z", "value" => ""} [2026-07-09 13:15:23.337] [DEBUG] QUERY OK db=25.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:15:22Z", "sim_operator", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401387, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.337] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"} [2026-07-09 13:15:23.378] [DEBUG] QUERY OK db=38.5ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "UNKNOWN", "sim_number", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401388, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.378] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"} [2026-07-09 13:15:23.401] [DEBUG] QUERY OK db=22.9ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "UNKNOWN", "sim_iccid", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401389, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.402] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"} [2026-07-09 13:15:23.439] [DEBUG] QUERY OK db=36.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "UNKNOWN", "sim_imsi", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401390, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.439] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"} [2026-07-09 13:15:23.459] [DEBUG] QUERY OK db=19.9ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "UNKNOWN", "sim_iccid2", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401391, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.460] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:15:22Z", "value" => "UNKNOWN"} [2026-07-09 13:15:23.475] [DEBUG] QUERY OK db=14.7ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "UNKNOWN", "sim_imsi2", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401392, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.477] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "29"} [2026-07-09 13:15:23.505] [DEBUG] QUERY OK db=27.5ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "29", "data_usage_mb", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401393, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.505] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:15:22Z", "value" => "0"} [2026-07-09 13:15:23.532] [DEBUG] QUERY OK db=26.5ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:22Z", "0", "mobile_data_mb", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401394, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.533] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:15:23.554] [DEBUG] QUERY OK db=19.2ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46831, ~N[2026-07-09 13:15:23], ~N[2026-07-09 13:15:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:23.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401395, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:15:22Z", message: nil, status_log_id: 46831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:23], updated_at: ~N[2026-07-09 13:15:23]}} [2026-07-09 13:15:23.558] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=23.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:376 [2026-07-09 13:15:23.566] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:15:52.868] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:15:52.868] [INFO ] Incoming JSON payload: {"oid":"c72577e8-7951-4a29-81ce-adbfb7a136ac","sn":"98250904730001","uploadTime":"2026-07-09T13:15:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:15:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:15:52.870] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c72577e8-7951-4a29-81ce-adbfb7a136ac", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:15:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:15:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:15:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:15:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:15:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:15:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:15:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:15:52Z", "vendor" => "morefun"} [2026-07-09 13:15:52.870] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:15:52.870] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:15:52.870] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:15:52.871] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=647.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-07-09 13:15:52.872] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=588.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-07-09 13:15:52.872] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:15:52.874] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:15:52.874] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:15:52.903] [DEBUG] QUERY OK source="tms_terminals" db=28.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:15:52], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:15:52.903] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:15:52.905] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:15:52.927] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms queue=0.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:15:52], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:15:52.943] [DEBUG] QUERY OK db=15.0ms queue=0.1ms idle=23.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "c72577e8-7951-4a29-81ce-adbfb7a136ac", "2026-07-09T13:15:52Z", ~N[2026-07-09 13:15:52], ~N[2026-07-09 13:15:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:15:52.943] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46832, oid: "c72577e8-7951-4a29-81ce-adbfb7a136ac", upload_time: "2026-07-09T13:15:52Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:52], updated_at: ~N[2026-07-09 13:15:52]} [2026-07-09 13:15:52.943] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:15:52Z", "value" => "morefun"} [2026-07-09 13:15:52.958] [DEBUG] QUERY OK db=14.0ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "morefun", "vendor", 46832, ~N[2026-07-09 13:15:52], ~N[2026-07-09 13:15:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:52.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401396, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:52], updated_at: ~N[2026-07-09 13:15:52]}} [2026-07-09 13:15:52.960] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:15:52Z", "value" => "kiosk_launcher"} [2026-07-09 13:15:52.979] [DEBUG] QUERY OK db=18.9ms queue=0.1ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "kiosk_launcher", "model", 46832, ~N[2026-07-09 13:15:52], ~N[2026-07-09 13:15:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:52.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401397, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:52], updated_at: ~N[2026-07-09 13:15:52]}} [2026-07-09 13:15:52.980] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:15:52Z", "value" => "1.0"} [2026-07-09 13:15:52.993] [DEBUG] QUERY OK db=12.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-07-09T13:15:52Z", "1.0", "app_version", 46832, ~N[2026-07-09 13:15:52], ~N[2026-07-09 13:15:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:52.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401398, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:52], updated_at: ~N[2026-07-09 13:15:52]}} [2026-07-09 13:15:52.994] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:15:52Z", "value" => "13"} [2026-07-09 13:15:53.009] [DEBUG] QUERY OK db=14.9ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "13", "android_version", 46832, ~N[2026-07-09 13:15:52], ~N[2026-07-09 13:15:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401399, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:52], updated_at: ~N[2026-07-09 13:15:52]}} [2026-07-09 13:15:53.010] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "1082"} [2026-07-09 13:15:53.024] [DEBUG] QUERY OK db=13.9ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "1082", "ram_free_mb", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401400, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.024] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:15:52Z", "value" => "WIFI"} [2026-07-09 13:15:53.039] [DEBUG] QUERY OK db=14.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "WIFI", "network_type", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401401, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.040] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:15:52Z", "value" => "true"} [2026-07-09 13:15:53.052] [DEBUG] QUERY OK db=11.8ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "true", "kiosk_active", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401402, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.053] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:15:52Z", "value" => ""} [2026-07-09 13:15:53.073] [DEBUG] QUERY OK db=19.3ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:15:52Z", "sim_operator", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401403, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.074] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.089] [DEBUG] QUERY OK db=14.4ms queue=0.6ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "UNKNOWN", "sim_number", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401404, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.090] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.110] [DEBUG] QUERY OK db=20.0ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "UNKNOWN", "sim_iccid", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401405, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.111] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.130] [DEBUG] QUERY OK db=19.0ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "UNKNOWN", "sim_imsi", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401406, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.130] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.183] [DEBUG] QUERY OK db=52.3ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "UNKNOWN", "sim_iccid2", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401407, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.184] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:15:52Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.207] [DEBUG] QUERY OK db=23.1ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "UNKNOWN", "sim_imsi2", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401408, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.208] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "29"} [2026-07-09 13:15:53.231] [DEBUG] QUERY OK db=23.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "29", "data_usage_mb", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401409, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.232] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:15:52Z", "value" => "0"} [2026-07-09 13:15:53.259] [DEBUG] QUERY OK db=27.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15:52Z", "0", "mobile_data_mb", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401410, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.260] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:15:53.279] [DEBUG] QUERY OK db=17.3ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:15: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46832, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401411, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:15:52Z", message: nil, status_log_id: 46832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.281] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:15:53.281] [INFO ] Incoming JSON payload: {"oid":"860e0385-6b8a-4273-9260-9c2aa0a931af","sn":"98251226730001","uploadTime":"2026-07-09T21:19:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:19:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:19: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.reso (truncated) [2026-07-09 13:15:53.282] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "860e0385-6b8a-4273-9260-9c2aa0a931af", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:19:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:19:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:19:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:19:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:19:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:19:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:19:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:19: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-07-09T21:19:00Z", "vendor" => "morefun"} [2026-07-09 13:15:53.282] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:15:53.282] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:15:53.282] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:15:53.282] [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:376 [2026-07-09 13:15:53.283] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=3.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:15:53.284] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1.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-07-09 13:15:53.285] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:15:53.287] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:15:53.287] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:15:53.292] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:15:53.299] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:15:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:15:53.300] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:15:53.301] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=10.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:15:53.316] [DEBUG] QUERY OK source="tms_terminals" db=14.7ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:15:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:15:53.331] [DEBUG] QUERY OK db=14.3ms queue=0.2ms idle=16.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "860e0385-6b8a-4273-9260-9c2aa0a931af", "2026-07-09T21:19:00Z", ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:15:53.332] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46833, oid: "860e0385-6b8a-4273-9260-9c2aa0a931af", upload_time: "2026-07-09T21:19:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]} [2026-07-09 13:15:53.332] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:19:00Z", "value" => "morefun"} [2026-07-09 13:15:53.344] [DEBUG] QUERY OK db=12.1ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "morefun", "vendor", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401412, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.345] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:19:00Z", "value" => "kiosk_launcher"} [2026-07-09 13:15:53.361] [DEBUG] QUERY OK db=15.5ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "kiosk_launcher", "model", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401413, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.361] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:19:00Z", "value" => "1.0"} [2026-07-09 13:15:53.383] [DEBUG] QUERY OK db=21.7ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "1.0", "app_version", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401414, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.384] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:19:00Z", "value" => "13"} [2026-07-09 13:15:53.401] [DEBUG] QUERY OK db=16.9ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "13", "android_version", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401415, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.402] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "922"} [2026-07-09 13:15:53.424] [DEBUG] QUERY OK db=20.6ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "922", "ram_free_mb", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401416, itemkey: "ram_free_mb", value: "922", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.425] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:19:00Z", "value" => "WIFI"} [2026-07-09 13:15:53.449] [DEBUG] QUERY OK db=23.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "WIFI", "network_type", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401417, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.449] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:19:00Z", "value" => "true"} [2026-07-09 13:15:53.476] [DEBUG] QUERY OK db=26.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "true", "kiosk_active", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401418, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.476] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:19:00Z", "value" => ""} [2026-07-09 13:15:53.494] [DEBUG] QUERY OK db=17.3ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:19:00Z", "sim_operator", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401419, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.494] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.514] [DEBUG] QUERY OK db=19.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "UNKNOWN", "sim_number", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401420, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.515] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.548] [DEBUG] QUERY OK db=31.9ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "UNKNOWN", "sim_iccid", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401421, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.549] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.572] [DEBUG] QUERY OK db=22.7ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "UNKNOWN", "sim_imsi", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401422, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.573] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.587] [DEBUG] QUERY OK db=13.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "UNKNOWN", "sim_iccid2", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401423, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.587] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:19:00Z", "value" => "UNKNOWN"} [2026-07-09 13:15:53.598] [DEBUG] QUERY OK db=10.8ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "UNKNOWN", "sim_imsi2", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401424, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.599] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "11"} [2026-07-09 13:15:53.619] [DEBUG] QUERY OK db=19.9ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "11", "data_usage_mb", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401425, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.620] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:19:00Z", "value" => "0"} [2026-07-09 13:15:53.652] [DEBUG] QUERY OK db=32.1ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:00Z", "0", "mobile_data_mb", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401426, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.656] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:19: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-07-09 13:15:53.674] [DEBUG] QUERY OK db=17.4ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19: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" <> ..., "installed_apps", 46833, ~N[2026-07-09 13:15:53], ~N[2026-07-09 13:15:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:15:53.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401427, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:19:00Z", message: nil, status_log_id: 46833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:15:53], updated_at: ~N[2026-07-09 13:15:53]}} [2026-07-09 13:15:53.676] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:15:53.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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:16:22.949] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:16:22.949] [INFO ] Incoming JSON payload: {"oid":"06fdbb84-837c-43e3-9dd5-61f1e5983509","sn":"98250904730001","uploadTime":"2026-07-09T13:16:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:16:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:16:22.950] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "06fdbb84-837c-43e3-9dd5-61f1e5983509", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:16:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:16:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:16:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:16:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:16:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:16:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:16:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:16:22Z", "vendor" => "morefun"} [2026-07-09 13:16:22.951] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:16:22.951] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:16:22.951] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:16:22.953] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=683.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-07-09 13:16:22.955] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.2ms idle=545.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-07-09 13:16:22.955] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:16:22.961] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:16:22.961] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:16:22.978] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=7.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:16:22], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:16:22.978] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:16:22.979] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:16:23.011] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:16:22], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:16:23.036] [DEBUG] QUERY OK db=24.1ms idle=32.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "06fdbb84-837c-43e3-9dd5-61f1e5983509", "2026-07-09T13:16:22Z", ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:16:23.036] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46834, oid: "06fdbb84-837c-43e3-9dd5-61f1e5983509", upload_time: "2026-07-09T13:16:22Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]} [2026-07-09 13:16:23.036] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:16:22Z", "value" => "morefun"} [2026-07-09 13:16:23.048] [DEBUG] QUERY OK db=10.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "morefun", "vendor", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401428, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.049] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:16:22Z", "value" => "kiosk_launcher"} [2026-07-09 13:16:23.064] [DEBUG] QUERY OK db=14.3ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "kiosk_launcher", "model", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401429, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.064] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:16:22Z", "value" => "1.0"} [2026-07-09 13:16:23.085] [DEBUG] QUERY OK db=19.9ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "1.0", "app_version", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401430, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.086] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:16:22Z", "value" => "13"} [2026-07-09 13:16:23.115] [DEBUG] QUERY OK db=28.8ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "13", "android_version", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401431, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.116] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "1079"} [2026-07-09 13:16:23.140] [DEBUG] QUERY OK db=23.3ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "1079", "ram_free_mb", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401432, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.140] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:16:22Z", "value" => "WIFI"} [2026-07-09 13:16:23.254] [DEBUG] QUERY OK db=111.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "WIFI", "network_type", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401433, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.254] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:16:22Z", "value" => "true"} [2026-07-09 13:16:23.271] [DEBUG] QUERY OK db=16.9ms idle=114.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "true", "kiosk_active", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401434, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.272] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:16:22Z", "value" => ""} [2026-07-09 13:16:23.285] [DEBUG] QUERY OK db=12.9ms queue=0.2ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:16:22Z", "sim_operator", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401435, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.285] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.312] [DEBUG] QUERY OK db=26.4ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "UNKNOWN", "sim_number", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401436, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.313] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.334] [DEBUG] QUERY OK db=20.3ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "UNKNOWN", "sim_iccid", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401437, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.334] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.349] [DEBUG] QUERY OK db=12.0ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "UNKNOWN", "sim_imsi", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401438, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.349] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.367] [DEBUG] QUERY OK db=16.8ms queue=0.2ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "UNKNOWN", "sim_iccid2", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401439, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.367] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:16:22Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.403] [DEBUG] QUERY OK db=35.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "UNKNOWN", "sim_imsi2", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401440, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.404] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "29"} [2026-07-09 13:16:23.420] [DEBUG] QUERY OK db=15.5ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "29", "data_usage_mb", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401441, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.420] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:16:22Z", "value" => "0"} [2026-07-09 13:16:23.431] [DEBUG] QUERY OK db=10.9ms idle=10.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:22Z", "0", "mobile_data_mb", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401442, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.434] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:16:23.460] [DEBUG] QUERY OK db=24.1ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46834, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401443, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:16:22Z", message: nil, status_log_id: 46834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.464] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:16:23.464] [INFO ] Incoming JSON payload: {"oid":"8db6cb9d-ac2c-4588-9e7d-7345a4f9814b","sn":"98251226730001","uploadTime":"2026-07-09T21:19:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:19:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:19: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:16:23.464] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=30.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:16:23.467] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8db6cb9d-ac2c-4588-9e7d-7345a4f9814b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:19:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:19:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:19:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:19:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:19:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:19:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:19:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:19: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:19:30Z", "vendor" => "morefun"} [2026-07-09 13:16:23.467] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:16:23.468] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:16:23.468] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:16:23.469] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:16:23.470] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=5.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:16:23.470] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:16:23.471] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:16:23.471] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:16:23.487] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:16:23.502] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:16:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:16:23.502] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:16:23.503] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:16:23.515] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:16:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:16:23.531] [DEBUG] QUERY OK db=15.5ms queue=0.1ms idle=12.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8db6cb9d-ac2c-4588-9e7d-7345a4f9814b", "2026-07-09T21:19:30Z", ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:16:23.532] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46835, oid: "8db6cb9d-ac2c-4588-9e7d-7345a4f9814b", upload_time: "2026-07-09T21:19:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]} [2026-07-09 13:16:23.532] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:19:30Z", "value" => "morefun"} [2026-07-09 13:16:23.568] [DEBUG] QUERY OK db=35.9ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "morefun", "vendor", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401444, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.569] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:19:30Z", "value" => "kiosk_launcher"} [2026-07-09 13:16:23.603] [DEBUG] QUERY OK db=32.1ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "kiosk_launcher", "model", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401445, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.603] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:19:30Z", "value" => "1.0"} [2026-07-09 13:16:23.615] [DEBUG] QUERY OK db=11.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "1.0", "app_version", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401446, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.615] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:19:30Z", "value" => "13"} [2026-07-09 13:16:23.631] [DEBUG] QUERY OK db=15.4ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "13", "android_version", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401447, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.632] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "923"} [2026-07-09 13:16:23.666] [DEBUG] QUERY OK db=33.9ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "923", "ram_free_mb", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401448, itemkey: "ram_free_mb", value: "923", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.669] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:19:30Z", "value" => "WIFI"} [2026-07-09 13:16:23.699] [DEBUG] QUERY OK db=29.6ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "WIFI", "network_type", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401449, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.699] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:19:30Z", "value" => "true"} [2026-07-09 13:16:23.711] [DEBUG] QUERY OK db=11.6ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "true", "kiosk_active", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401450, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.712] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:19:30Z", "value" => ""} [2026-07-09 13:16:23.727] [DEBUG] QUERY OK db=13.1ms queue=1.9ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:19:30Z", "sim_operator", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401451, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.728] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.752] [DEBUG] QUERY OK db=23.6ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "UNKNOWN", "sim_number", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401452, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.753] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.788] [DEBUG] QUERY OK db=34.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "UNKNOWN", "sim_iccid", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401453, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.788] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.807] [DEBUG] QUERY OK db=17.8ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "UNKNOWN", "sim_imsi", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401454, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.808] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.821] [DEBUG] QUERY OK db=13.2ms queue=0.1ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "UNKNOWN", "sim_iccid2", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401455, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.822] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:19:30Z", "value" => "UNKNOWN"} [2026-07-09 13:16:23.840] [DEBUG] QUERY OK db=17.9ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "UNKNOWN", "sim_imsi2", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401456, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.840] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "11"} [2026-07-09 13:16:23.864] [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-07-09T21:19:30Z", "11", "data_usage_mb", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401457, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.864] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:19:30Z", "value" => "0"} [2026-07-09 13:16:23.887] [DEBUG] QUERY OK db=22.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19:30Z", "0", "mobile_data_mb", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401458, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.891] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:19: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:16:23.913] [DEBUG] QUERY OK db=21.0ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:19: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46835, ~N[2026-07-09 13:16:23], ~N[2026-07-09 13:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:23.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401459, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:19:30Z", message: nil, status_log_id: 46835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:23], updated_at: ~N[2026-07-09 13:16:23]}} [2026-07-09 13:16:23.919] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=2.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:16:23.931] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:16:35.760] [INFO ] Running offline device check... [2026-07-09 13:16:35.760] [INFO ] Starting offline device check... [2026-07-09 13:16:35.765] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=1298.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:747 [2026-07-09 13:16:35.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.1ms idle=301.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:16:35.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=0.1ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:762 [2026-07-09 13:16:35.799] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.1ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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:762 [2026-07-09 13:16:35.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.885] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.7ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=19.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:16:35.913] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.4ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.939] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.949] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=0.7ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=7.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:16:35.974] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 13:16:35.975] [INFO ] Offline device check completed successfully [2026-07-09 13:16:52.659] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:16:52.659] [INFO ] Incoming JSON payload: {"oid":"6d398f99-ab5d-42ed-9d56-df6c2d2fabfb","sn":"98251226730001","uploadTime":"2026-07-09T21:20:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:20:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:20: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.reso (truncated) [2026-07-09 13:16:52.661] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d398f99-ab5d-42ed-9d56-df6c2d2fabfb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:20:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:20:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:20:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:20:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:20:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:20:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:20:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:20: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-07-09T21:20:00Z", "vendor" => "morefun"} [2026-07-09 13:16:52.661] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:16:52.661] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:16:52.661] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:16:52.663] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=351.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-07-09 13:16:52.664] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=104.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-07-09 13:16:52.664] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:16:52.666] [DEBUG] QUERY OK source="tms_terminals" db=1.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:16:52.666] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:16:52.697] [DEBUG] QUERY OK source="tms_terminals" db=30.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:16:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:16:52.698] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:16:52.699] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:16:52.724] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:16:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:16:52.750] [DEBUG] QUERY OK db=25.3ms idle=25.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6d398f99-ab5d-42ed-9d56-df6c2d2fabfb", "2026-07-09T21:20:00Z", ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:16:52.751] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46836, oid: "6d398f99-ab5d-42ed-9d56-df6c2d2fabfb", upload_time: "2026-07-09T21:20:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]} [2026-07-09 13:16:52.751] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:20:00Z", "value" => "morefun"} [2026-07-09 13:16:52.770] [DEBUG] QUERY OK db=17.7ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "morefun", "vendor", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401460, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.770] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:20:00Z", "value" => "kiosk_launcher"} [2026-07-09 13:16:52.798] [DEBUG] QUERY OK db=27.3ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "kiosk_launcher", "model", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401461, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.798] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:20:00Z", "value" => "1.0"} [2026-07-09 13:16:52.824] [DEBUG] QUERY OK db=24.6ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "1.0", "app_version", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401462, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.824] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:20:00Z", "value" => "13"} [2026-07-09 13:16:52.852] [DEBUG] QUERY OK db=27.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "13", "android_version", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401463, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.852] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "925"} [2026-07-09 13:16:52.866] [DEBUG] QUERY OK db=13.0ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "925", "ram_free_mb", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401464, itemkey: "ram_free_mb", value: "925", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.866] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:20:00Z", "value" => "WIFI"} [2026-07-09 13:16:52.880] [DEBUG] QUERY OK db=13.2ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "WIFI", "network_type", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401465, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.880] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:20:00Z", "value" => "true"} [2026-07-09 13:16:52.911] [DEBUG] QUERY OK db=31.0ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "true", "kiosk_active", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401466, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.912] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:20:00Z", "value" => ""} [2026-07-09 13:16:52.938] [DEBUG] QUERY OK db=23.7ms queue=1.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:20:00Z", "sim_operator", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401467, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.938] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"} [2026-07-09 13:16:52.964] [DEBUG] QUERY OK db=25.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "UNKNOWN", "sim_number", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401468, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.964] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"} [2026-07-09 13:16:52.986] [DEBUG] QUERY OK db=21.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "UNKNOWN", "sim_iccid", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:52.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401469, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:52.987] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.018] [DEBUG] QUERY OK db=30.1ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "UNKNOWN", "sim_imsi", 46836, ~N[2026-07-09 13:16:52], ~N[2026-07-09 13:16:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401470, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:52], updated_at: ~N[2026-07-09 13:16:52]}} [2026-07-09 13:16:53.018] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.043] [DEBUG] QUERY OK db=25.1ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "UNKNOWN", "sim_iccid2", 46836, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401471, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.044] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:20:00Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.071] [DEBUG] QUERY OK db=26.8ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "UNKNOWN", "sim_imsi2", 46836, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401472, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.071] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "11"} [2026-07-09 13:16:53.091] [DEBUG] QUERY OK db=19.6ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "11", "data_usage_mb", 46836, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401473, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.092] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:20:00Z", "value" => "0"} [2026-07-09 13:16:53.133] [DEBUG] QUERY OK db=35.9ms queue=0.7ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:00Z", "0", "mobile_data_mb", 46836, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401474, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.134] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:20: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-07-09 13:16:53.270] [DEBUG] QUERY OK db=135.3ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20: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" <> ..., "installed_apps", 46836, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401475, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:20:00Z", message: nil, status_log_id: 46836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.278] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=143.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:376 [2026-07-09 13:16:53.287] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:16:53.293] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:16:53.294] [INFO ] Incoming JSON payload: {"oid":"a0e8a37b-96f4-45a6-989c-55b60f407793","sn":"98250904730001","uploadTime":"2026-07-09T13:16:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:16:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:16:53.296] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a0e8a37b-96f4-45a6-989c-55b60f407793", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:16:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:16:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:16:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:16:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:16:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:16:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:16:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:16:52Z", "vendor" => "morefun"} [2026-07-09 13:16:53.296] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:16:53.296] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:16:53.296] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:16:53.297] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=26.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-07-09 13:16:53.298] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:16:53.298] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:16:53.303] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.2ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:16:53.306] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:16:53.346] [DEBUG] QUERY OK source="tms_terminals" db=39.6ms idle=8.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:16:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:16:53.348] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:16:53.349] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=45.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:16:53.363] [DEBUG] QUERY OK source="tms_terminals" db=12.8ms queue=0.4ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:16:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:16:53.379] [DEBUG] QUERY OK db=15.0ms idle=14.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "a0e8a37b-96f4-45a6-989c-55b60f407793", "2026-07-09T13:16:52Z", ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:16:53.379] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46837, oid: "a0e8a37b-96f4-45a6-989c-55b60f407793", upload_time: "2026-07-09T13:16:52Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]} [2026-07-09 13:16:53.379] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:16:52Z", "value" => "morefun"} [2026-07-09 13:16:53.416] [DEBUG] QUERY OK db=32.1ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "morefun", "vendor", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401476, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.417] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:16:52Z", "value" => "kiosk_launcher"} [2026-07-09 13:16:53.448] [DEBUG] QUERY OK db=30.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "kiosk_launcher", "model", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401477, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.452] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:16:52Z", "value" => "1.0"} [2026-07-09 13:16:53.467] [DEBUG] QUERY OK db=14.7ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "1.0", "app_version", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401478, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.468] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:16:52Z", "value" => "13"} [2026-07-09 13:16:53.481] [DEBUG] QUERY OK db=12.6ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "13", "android_version", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401479, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.481] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "1083"} [2026-07-09 13:16:53.506] [DEBUG] QUERY OK db=24.4ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "1083", "ram_free_mb", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401480, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.506] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:16:52Z", "value" => "WIFI"} [2026-07-09 13:16:53.540] [DEBUG] QUERY OK db=33.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "WIFI", "network_type", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401481, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.540] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:16:52Z", "value" => "true"} [2026-07-09 13:16:53.562] [DEBUG] QUERY OK db=19.9ms queue=0.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "true", "kiosk_active", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401482, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.562] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:16:52Z", "value" => ""} [2026-07-09 13:16:53.580] [DEBUG] QUERY OK db=17.3ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:16:52Z", "sim_operator", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401483, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.581] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.605] [DEBUG] QUERY OK db=21.2ms queue=0.5ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "UNKNOWN", "sim_number", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401484, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.605] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.642] [DEBUG] QUERY OK db=37.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "UNKNOWN", "sim_iccid", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401485, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.643] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.661] [DEBUG] QUERY OK db=17.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "UNKNOWN", "sim_imsi", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401486, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.661] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.678] [DEBUG] QUERY OK db=16.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "UNKNOWN", "sim_iccid2", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401487, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.681] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:16:52Z", "value" => "UNKNOWN"} [2026-07-09 13:16:53.711] [DEBUG] QUERY OK db=28.0ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "UNKNOWN", "sim_imsi2", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401488, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.712] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "29"} [2026-07-09 13:16:53.740] [DEBUG] QUERY OK db=22.2ms queue=1.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "29", "data_usage_mb", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401489, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.740] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:16:52Z", "value" => "0"} [2026-07-09 13:16:53.760] [DEBUG] QUERY OK db=16.0ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16:52Z", "0", "mobile_data_mb", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401490, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.768] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:16:53.792] [DEBUG] QUERY OK db=21.3ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:16: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46837, ~N[2026-07-09 13:16:53], ~N[2026-07-09 13:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:16:53.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401491, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:16:52Z", message: nil, status_log_id: 46837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:16:53], updated_at: ~N[2026-07-09 13:16:53]}} [2026-07-09 13:16:53.798] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=1.6ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:16:53.812] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:17:22.873] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:17:22.873] [INFO ] Incoming JSON payload: {"oid":"e193ef1a-4d50-4162-916d-780c03ce3373","sn":"98251226730001","uploadTime":"2026-07-09T21:20:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:20:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:17:22.874] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e193ef1a-4d50-4162-916d-780c03ce3373", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:20:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:20:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:20:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:20:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:20:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:20:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:20:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:20:30Z", "vendor" => "morefun"} [2026-07-09 13:17:22.874] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:17:22.875] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:17:22.875] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:17:22.876] [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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:17:22.877] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=217.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-07-09 13:17:22.877] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:17:22.877] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:17:22.878] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:17:22.904] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:17:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:17:22.905] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:17:22.908] [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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:17:22.941] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:17:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:17:22.978] [DEBUG] QUERY OK db=36.4ms idle=34.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e193ef1a-4d50-4162-916d-780c03ce3373", "2026-07-09T21:20:30Z", ~N[2026-07-09 13:17:22], ~N[2026-07-09 13:17:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:17:22.979] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46838, oid: "e193ef1a-4d50-4162-916d-780c03ce3373", upload_time: "2026-07-09T21:20:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:22], updated_at: ~N[2026-07-09 13:17:22]} [2026-07-09 13:17:22.979] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:20:30Z", "value" => "morefun"} [2026-07-09 13:17:23.008] [DEBUG] QUERY OK db=28.4ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "morefun", "vendor", 46838, ~N[2026-07-09 13:17:22], ~N[2026-07-09 13:17:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401492, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:22], updated_at: ~N[2026-07-09 13:17:22]}} [2026-07-09 13:17:23.008] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:20:30Z", "value" => "kiosk_launcher"} [2026-07-09 13:17:23.038] [DEBUG] QUERY OK db=29.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "kiosk_launcher", "model", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401493, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.038] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:20:30Z", "value" => "1.0"} [2026-07-09 13:17:23.071] [DEBUG] QUERY OK db=32.0ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "1.0", "app_version", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401494, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.071] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:20:30Z", "value" => "13"} [2026-07-09 13:17:23.095] [DEBUG] QUERY OK db=23.2ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "13", "android_version", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401495, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.095] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "922"} [2026-07-09 13:17:23.122] [DEBUG] QUERY OK db=26.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "922", "ram_free_mb", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401496, itemkey: "ram_free_mb", value: "922", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.122] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:20:30Z", "value" => "WIFI"} [2026-07-09 13:17:23.172] [DEBUG] QUERY OK db=49.7ms queue=0.3ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "WIFI", "network_type", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401497, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.173] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:20:30Z", "value" => "true"} [2026-07-09 13:17:23.293] [DEBUG] QUERY OK db=119.5ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "true", "kiosk_active", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401498, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.294] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:20:30Z", "value" => ""} [2026-07-09 13:17:23.317] [DEBUG] QUERY OK db=23.1ms idle=121.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:20:30Z", "sim_operator", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401499, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.317] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.338] [DEBUG] QUERY OK db=20.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "UNKNOWN", "sim_number", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401500, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.338] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.367] [DEBUG] QUERY OK db=28.1ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "UNKNOWN", "sim_iccid", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401501, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.367] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.402] [DEBUG] QUERY OK db=33.8ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "UNKNOWN", "sim_imsi", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401502, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.402] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.428] [DEBUG] QUERY OK db=25.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "UNKNOWN", "sim_iccid2", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401503, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.429] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:20:30Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.455] [DEBUG] QUERY OK db=25.2ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "UNKNOWN", "sim_imsi2", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401504, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.456] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "11"} [2026-07-09 13:17:23.480] [DEBUG] QUERY OK db=24.3ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "11", "data_usage_mb", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401505, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.481] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:20:30Z", "value" => "0"} [2026-07-09 13:17:23.514] [DEBUG] QUERY OK db=33.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20:30Z", "0", "mobile_data_mb", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401506, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.517] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:17:23.546] [DEBUG] QUERY OK db=28.2ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:20: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46838, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401507, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:20:30Z", message: nil, status_log_id: 46838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.547] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:17:23.550] [INFO ] Incoming JSON payload: {"oid":"8e0b06ca-9475-464c-85ca-87e44a88c4b5","sn":"98250904730001","uploadTime":"2026-07-09T13:17:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:17:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:17:23.552] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8e0b06ca-9475-464c-85ca-87e44a88c4b5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:17:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:17:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:17:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:17:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:17:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:17:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:17:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:17:23Z", "vendor" => "morefun"} [2026-07-09 13:17:23.552] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:17:23.552] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:17:23.552] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:17:23.554] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.3ms idle=6.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-07-09 13:17:23.557] [DEBUG] QUERY OK source="tms_terminals" db=6.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:17:23.559] [DEBUG] QUERY OK source="parameter_templates" db=3.8ms queue=0.1ms 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-07-09 13:17:23.559] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:17:23.564] [DEBUG] QUERY OK source="tms_terminals" db=5.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:17:23.565] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:17:23.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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:17:23.587] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:17:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:17:23.588] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:17:23.591] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=1.1ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:17:23.612] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:17:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:17:23.647] [DEBUG] QUERY OK db=34.2ms idle=21.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "8e0b06ca-9475-464c-85ca-87e44a88c4b5", "2026-07-09T13:17:23Z", ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:17:23.647] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46839, oid: "8e0b06ca-9475-464c-85ca-87e44a88c4b5", upload_time: "2026-07-09T13:17:23Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]} [2026-07-09 13:17:23.647] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:17:23Z", "value" => "morefun"} [2026-07-09 13:17:23.672] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "morefun", "vendor", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401508, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.673] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:17:23Z", "value" => "kiosk_launcher"} [2026-07-09 13:17:23.706] [DEBUG] QUERY OK db=32.7ms queue=0.1ms idle=10.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "kiosk_launcher", "model", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401509, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.707] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:17:23Z", "value" => "1.0"} [2026-07-09 13:17:23.726] [DEBUG] QUERY OK db=18.1ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "1.0", "app_version", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401510, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.727] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:17:23Z", "value" => "13"} [2026-07-09 13:17:23.760] [DEBUG] QUERY OK db=32.2ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "13", "android_version", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401511, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.760] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "1085"} [2026-07-09 13:17:23.784] [DEBUG] QUERY OK db=22.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "1085", "ram_free_mb", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401512, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.784] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:17:23Z", "value" => "WIFI"} [2026-07-09 13:17:23.814] [DEBUG] QUERY OK db=29.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "WIFI", "network_type", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401513, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.815] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:17:23Z", "value" => "true"} [2026-07-09 13:17:23.829] [DEBUG] QUERY OK db=13.6ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "true", "kiosk_active", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401514, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.829] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:17:23Z", "value" => ""} [2026-07-09 13:17:23.871] [DEBUG] QUERY OK db=41.2ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:17:23Z", "sim_operator", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401515, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.871] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.902] [DEBUG] QUERY OK db=30.5ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "UNKNOWN", "sim_number", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401516, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.903] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.915] [DEBUG] QUERY OK db=12.3ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "UNKNOWN", "sim_iccid", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401517, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.916] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.951] [DEBUG] QUERY OK db=35.0ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "UNKNOWN", "sim_imsi", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401518, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.954] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"} [2026-07-09 13:17:23.990] [DEBUG] QUERY OK db=34.8ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "UNKNOWN", "sim_iccid2", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:23.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401519, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:23.990] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:17:23Z", "value" => "UNKNOWN"} [2026-07-09 13:17:24.016] [DEBUG] QUERY OK db=23.9ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "UNKNOWN", "sim_imsi2", 46839, ~N[2026-07-09 13:17:23], ~N[2026-07-09 13:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:24.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401520, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:23], updated_at: ~N[2026-07-09 13:17:23]}} [2026-07-09 13:17:24.016] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "29"} [2026-07-09 13:17:24.032] [DEBUG] QUERY OK db=15.3ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "29", "data_usage_mb", 46839, ~N[2026-07-09 13:17:24], ~N[2026-07-09 13:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:24.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401521, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:24], updated_at: ~N[2026-07-09 13:17:24]}} [2026-07-09 13:17:24.032] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:17:23Z", "value" => "0"} [2026-07-09 13:17:24.055] [DEBUG] QUERY OK db=22.1ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:23Z", "0", "mobile_data_mb", 46839, ~N[2026-07-09 13:17:24], ~N[2026-07-09 13:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:24.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401522, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:24], updated_at: ~N[2026-07-09 13:17:24]}} [2026-07-09 13:17:24.057] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:17:24.093] [DEBUG] QUERY OK db=29.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46839, ~N[2026-07-09 13:17:24], ~N[2026-07-09 13:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:24.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401523, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:17:23Z", message: nil, status_log_id: 46839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:24], updated_at: ~N[2026-07-09 13:17:24]}} [2026-07-09 13:17:24.099] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:17:24.107] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:17:49.716] [INFO ] Received status update for terminal 513940210000000_94021707 [2026-07-09 13:17:49.716] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-09T13:17:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-09T13:17:49Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-09T13:17:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-09T13:17:49Z","value":"0"},{"itemkey":"memory","message":"Memory usage percentage","timestamp":"2026-07-09T13:17:49Z","value":"60"},{"itemkey":"emv_config","message":"EMV Config","timestamp":"","value":"1.0.0"},{"itemkey":"parameter_config","message":"Parameter config","timestamp":"","value":"1.0.0"},{"itemkey":"application","message":"application","timestamp":"","value":""},{"itemkey":"keys_config","message":"keys","timestamp":"","value":""}],"model":"softpos","oid":"organization_id","sn":"513940210000000_94021707","uploadTime":"2026-07-09T13:17:49Z","vendor":"softpos"} [2026-07-09 13:17:49.717] [INFO ] Decoded JSON: %{"model" => "softpos", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:17:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:17:49Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:17:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:17:49Z", "value" => "0"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:17:49Z", "value" => "60"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "513940210000000_94021707", "uploadTime" => "2026-07-09T13:17:49Z", "vendor" => "softpos"} [2026-07-09 13:17:49.717] [INFO ] Extracted versions for 513940210000000_94021707: %{application: "", emv_config: "1.0.0", keys_config: "", parameter_config: "1.0.0"} [2026-07-09 13:17:49.717] [INFO ] Detected missing versions for 513940210000000_94021707, triggering auto-push [2026-07-09 13:17:49.717] [INFO ] AutoPushService: Triggering auto-push for 513940210000000_94021707 (softpos softpos) - missing version [2026-07-09 13:17:49.718] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1723.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:17:49.720] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=987.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-09 13:17:49.721] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=0.1ms 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` = ?) [12] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-09 13:17:49.722] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms 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-07-09 13:17:49.724] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms 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 ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-09 13:17:49.765] [DEBUG] QUERY OK source="pos_merchant" db=40.3ms queue=0.1ms idle=1.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [209] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-09 13:17:49.766] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1762.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 ["513940210000000"] [2026-07-09 13:17:49.767] [INFO ] ParamsZipBuilder: Merchant info for merchantid=513940210000000 - business_name=Madhoolika SoftPOS, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid=cccd4c8f-16fb-4597-855d-51429b0d3fef [2026-07-09 13:17:49.768] [DEBUG] QUERY OK source="pos_terminal_data" db=1.1ms idle=33.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 ["94021707"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-09 13:17:49.769] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.2ms 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` = ?) [496] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-09 13:17:49.769] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=513940210000000_94021707, pos_merchant.merchantid="513940210000000" [2026-07-09 13:17:49.770] [INFO ] ParamsZipBuilder: params.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/params.zip [2026-07-09 13:17:49.790] [DEBUG] QUERY OK db=18.3ms queue=0.4ms idle=2.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", "bb3130579e800f79ed715c0d3ccf9eb388010bf6bf351b33fbf227d0f68b1c64", 7810, 969, ~U[2026-07-09 13:17:49Z], "priv/ota/513940210000000_94021707/params.zip", 62, "parameter", "softpos", "softpos", %{"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", 12, "missing_version", "1.0.0", ~N[2026-07-09 13:17:49], ~N[2026-07-09 13:17:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-09 13:17:49.790] [INFO ] AutoPushService: Created push log 33415 for MF919 params.zip [2026-07-09 13:17:49.790] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/params.zip", "requestId" => 7810, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:17:49.790] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:17:49.791] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 513940210000000_94021707 [2026-07-09 13:17:49.792] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=21.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-09 13:17:49.795] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 513940210000000_94021707 at priv/ota/513940210000000_94021707/l3config.zip (source: priv/static/Mypinpad/1.0.0/YSDK_L3_configuration.json) [2026-07-09 13:17:49.817] [DEBUG] QUERY OK db=21.1ms idle=6.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", "b951eaa10ac5494d55d7c37af824d583ddcf7af48958344dd90c8f4daf6a506f", 7874, 2334, ~U[2026-07-09 13:17:49Z], "priv/ota/513940210000000_94021707/l3config.zip", 62, "emv_config", "softpos", "softpos", "full", "missing_version", "1.0.0", ~N[2026-07-09 13:17:49], ~N[2026-07-09 13:17:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-09 13:17:49.818] [INFO ] AutoPushService: Created push log 33416 for MF919 l3config.zip (version: 1.0.0) [2026-07-09 13:17:49.818] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/513940210000000_94021707/l3config.zip", "requestId" => 7874, "type" => "tms_command", "version" => "1.0.0"} [2026-07-09 13:17:49.818] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 513940210000000_94021707 on topic: /ota/pFppbioOCKlo5c8E/513940210000000_94021707/update [2026-07-09 13:17:49.818] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 513940210000000_94021707 [2026-07-09 13:17:49.820] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms queue=0.1ms idle=25.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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-09 13:17:49.820] [INFO ] KeysConfigService: Generating keys.json for 513940210000000_94021707 (softpos) [2026-07-09 13:17:49.821] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-09 13:17:49.821] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 513940210000000_94021707 with params: %{"kekKcv" => "112233", "model" => "softpos", "serialNumber" => "513940210000000_94021707", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-07-09 13:17:49.823] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-09 13:17:49.823] [ERROR] KeysConfigService: Failed to generate keys for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:17:49.823] [ERROR] AutoPushService: Failed to generate keys.json for 513940210000000_94021707: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-09 13:17:49.823] [INFO ] AutoPushService: Skipping application push for softpos [2026-07-09 13:17:49.823] [INFO ] AutoPushService: Auto-push completed for 513940210000000_94021707 [2026-07-09 13:17:49.826] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["513940210000000_94021707"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:17:49.827] [INFO ] Terminal updated: 513940210000000_94021707 [2026-07-09 13:17:49.855] [DEBUG] QUERY OK source="tms_terminals" db=27.3ms idle=6.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:17:49], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:17:49.856] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=29.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 ["softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-09 13:17:49.857] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.2ms 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", "softpos", "softpos"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-09 13:17:49.857] [DEBUG] VersionComplianceChecker: 513940210000000_94021707 — all versions compliant [2026-07-09 13:17:49.858] [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` = ?) ["513940210000000_94021707"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:17:49.902] [DEBUG] QUERY OK source="tms_terminals" db=43.5ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:17:49], 62] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:17:49.959] [DEBUG] QUERY OK db=56.8ms idle=44.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [62, "organization_id", "2026-07-09T13:17:49Z", ~N[2026-07-09 13:17:49], ~N[2026-07-09 13:17:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:17:49.960] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46840, oid: "organization_id", upload_time: "2026-07-09T13:17:49Z", terminal_id: 62, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:49], updated_at: ~N[2026-07-09 13:17:49]} [2026-07-09 13:17:49.960] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-09T13:17:49Z", "value" => "online"} [2026-07-09 13:17:49.972] [DEBUG] QUERY OK db=11.1ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-09T13:17:49Z", "online", "status", 46840, ~N[2026-07-09 13:17:49], ~N[2026-07-09 13:17:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:49.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401524, itemkey: "status", value: "online", timestamp: "2026-07-09T13:17:49Z", message: "Terminal status update", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:49], updated_at: ~N[2026-07-09 13:17:49]}} [2026-07-09 13:17:49.973] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from status itemkey [2026-07-09 13:17:49.977] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-09T13:17:49Z", "value" => "100"} [2026-07-09 13:17:49.977] [INFO ] Terminal 513940210000000_94021707 status changed to: online. Updated grid with 42 terminals [2026-07-09 13:17:50.004] [DEBUG] QUERY OK db=26.7ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-09T13:17:49Z", "100", "battery", 46840, ~N[2026-07-09 13:17:49], ~N[2026-07-09 13:17:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401525, itemkey: "battery", value: "100", timestamp: "2026-07-09T13:17:49Z", message: "Battery level", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:49], updated_at: ~N[2026-07-09 13:17:49]}} [2026-07-09 13:17:50.005] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-09T13:17:49Z", "value" => "online"} [2026-07-09 13:17:50.028] [DEBUG] QUERY OK db=22.8ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-09T13:17:49Z", "online", "network", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401526, itemkey: "network", value: "online", timestamp: "2026-07-09T13:17:49Z", message: "Network connectivity", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.028] [INFO ] Setting terminal 513940210000000_94021707 status to 'online' from network itemkey [2026-07-09 13:17:50.029] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-09T13:17:49Z", "value" => "0"} [2026-07-09 13:17:50.029] [INFO ] Terminal 513940210000000_94021707 status changed to: online. Updated grid with 42 terminals [2026-07-09 13:17:50.056] [DEBUG] QUERY OK db=27.2ms 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-07-09T13:17:49Z", "0", "cpu", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401527, itemkey: "cpu", value: "0", timestamp: "2026-07-09T13:17:49Z", message: "CPU usage percentage", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.057] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2026-07-09T13:17:49Z", "value" => "60"} [2026-07-09 13:17:50.075] [DEBUG] QUERY OK db=17.5ms queue=0.5ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2026-07-09T13:17:49Z", "60", "memory", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401528, itemkey: "memory", value: "60", timestamp: "2026-07-09T13:17:49Z", message: "Memory usage percentage", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.076] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:17:50.175] [DEBUG] QUERY OK db=57.3ms queue=41.2ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["EMV Config", "1.0.0", "emv_config", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401529, itemkey: "emv_config", value: "1.0.0", timestamp: nil, message: "EMV Config", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.176] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => "1.0.0"} [2026-07-09 13:17:50.294] [DEBUG] QUERY OK db=74.7ms queue=41.3ms idle=103.0ms INSERT INTO `tms_terminal_status_items` (`message`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Parameter config", "1.0.0", "parameter_config", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401530, itemkey: "parameter_config", value: "1.0.0", timestamp: nil, message: "Parameter config", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.295] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [2026-07-09 13:17:50.320] [DEBUG] QUERY OK db=24.2ms queue=0.8ms idle=120.1ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401531, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.321] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [2026-07-09 13:17:50.354] [DEBUG] QUERY OK db=32.3ms queue=1.0ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 46840, ~N[2026-07-09 13:17:50], ~N[2026-07-09 13:17:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:50.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401532, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 46840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:50], updated_at: ~N[2026-07-09 13:17:50]}} [2026-07-09 13:17:50.355] [WARN ] Unexpected async result [2026-07-09 13:17:50.355] [WARN ] Unexpected async result [2026-07-09 13:17:50.356] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:17:50.363] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:17:52.983] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:17:52.983] [INFO ] Incoming JSON payload: {"oid":"8fef3d9d-768d-4597-b148-7e99629fd974","sn":"98251226730001","uploadTime":"2026-07-09T21:21:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"data_usage_mb","value":"11","timestamp":"2026-07-09T21:21:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:17:52.984] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8fef3d9d-768d-4597-b148-7e99629fd974", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:21:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:21:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:21:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:21:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:21:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:21:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:21:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "11"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:21:01Z", "vendor" => "morefun"} [2026-07-09 13:17:52.984] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:17:52.984] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:17:52.984] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:17:52.985] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=584.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-07-09 13:17:52.986] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=244.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-07-09 13:17:52.986] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:17:52.988] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:17:52.988] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:17:53.014] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms queue=0.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:17:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:17:53.014] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:17:53.015] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:17:53.031] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:17:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:17:53.043] [DEBUG] QUERY OK db=11.6ms idle=16.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8fef3d9d-768d-4597-b148-7e99629fd974", "2026-07-09T21:21:01Z", ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:17:53.044] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46841, oid: "8fef3d9d-768d-4597-b148-7e99629fd974", upload_time: "2026-07-09T21:21:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]} [2026-07-09 13:17:53.044] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:21:01Z", "value" => "morefun"} [2026-07-09 13:17:53.109] [DEBUG] QUERY OK db=22.6ms queue=41.6ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "morefun", "vendor", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401533, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.109] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:21:01Z", "value" => "kiosk_launcher"} [2026-07-09 13:17:53.223] [DEBUG] QUERY OK db=71.9ms queue=41.8ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "kiosk_launcher", "model", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401534, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.224] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:21:01Z", "value" => "1.0"} [2026-07-09 13:17:53.245] [DEBUG] QUERY OK db=20.7ms queue=0.1ms idle=115.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "1.0", "app_version", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401535, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.245] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:21:01Z", "value" => "13"} [2026-07-09 13:17:53.295] [DEBUG] QUERY OK db=48.7ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "13", "android_version", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401536, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.295] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "924"} [2026-07-09 13:17:53.315] [DEBUG] QUERY OK db=19.6ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "924", "ram_free_mb", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401537, itemkey: "ram_free_mb", value: "924", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.316] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:21:01Z", "value" => "WIFI"} [2026-07-09 13:17:53.340] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "WIFI", "network_type", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401538, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.341] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:21:01Z", "value" => "true"} [2026-07-09 13:17:53.369] [DEBUG] QUERY OK db=28.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "true", "kiosk_active", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401539, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.369] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:21:01Z", "value" => ""} [2026-07-09 13:17:53.428] [DEBUG] QUERY OK db=16.8ms queue=40.9ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:21:01Z", "sim_operator", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401540, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.428] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.439] [DEBUG] QUERY OK db=11.2ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "UNKNOWN", "sim_number", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401541, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.440] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.453] [DEBUG] QUERY OK db=13.1ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "UNKNOWN", "sim_iccid", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401542, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.454] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.480] [DEBUG] QUERY OK db=25.7ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "UNKNOWN", "sim_imsi", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401543, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.480] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.504] [DEBUG] QUERY OK db=23.3ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "UNKNOWN", "sim_iccid2", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401544, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.504] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:21:01Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.532] [DEBUG] QUERY OK db=27.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "UNKNOWN", "sim_imsi2", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401545, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.533] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "11"} [2026-07-09 13:17:53.547] [DEBUG] QUERY OK db=13.8ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "11", "data_usage_mb", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401546, itemkey: "data_usage_mb", value: "11", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.548] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:21:01Z", "value" => "0"} [2026-07-09 13:17:53.573] [DEBUG] QUERY OK db=25.3ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:01Z", "0", "mobile_data_mb", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401547, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.574] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:17:53.609] [DEBUG] QUERY OK db=34.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46841, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401548, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:21:01Z", message: nil, status_log_id: 46841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.611] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:17:53.611] [INFO ] Incoming JSON payload: {"oid":"b88c9da1-98a9-4626-acb2-a584fbd5638f","sn":"98250904730001","uploadTime":"2026-07-09T13:17:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:17:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:17:53.612] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b88c9da1-98a9-4626-acb2-a584fbd5638f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:17:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:17:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:17:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:17:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:17:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:17:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:17:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:17:53Z", "vendor" => "morefun"} [2026-07-09 13:17:53.613] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:17:53.613] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms 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:376 [2026-07-09 13:17:53.613] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:17:53.613] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:17:53.614] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=4.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-07-09 13:17:53.616] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=2.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-07-09 13:17:53.616] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:17:53.617] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:17:53.617] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:17:53.620] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:17:53.630] [DEBUG] QUERY OK source="tms_terminals" db=12.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:17:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:17:53.630] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:17:53.631] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=13.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:17:53.646] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:17:53], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:17:53.669] [DEBUG] QUERY OK db=22.5ms idle=14.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "b88c9da1-98a9-4626-acb2-a584fbd5638f", "2026-07-09T13:17:53Z", ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:17:53.669] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46842, oid: "b88c9da1-98a9-4626-acb2-a584fbd5638f", upload_time: "2026-07-09T13:17:53Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]} [2026-07-09 13:17:53.669] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:17:53Z", "value" => "morefun"} [2026-07-09 13:17:53.693] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "morefun", "vendor", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401549, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.693] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:17:53Z", "value" => "kiosk_launcher"} [2026-07-09 13:17:53.718] [DEBUG] QUERY OK db=24.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "kiosk_launcher", "model", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401550, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.719] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:17:53Z", "value" => "1.0"} [2026-07-09 13:17:53.735] [DEBUG] QUERY OK db=15.8ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "1.0", "app_version", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401551, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.736] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:17:53Z", "value" => "13"} [2026-07-09 13:17:53.764] [DEBUG] QUERY OK db=23.5ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "13", "android_version", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401552, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.764] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "1083"} [2026-07-09 13:17:53.789] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "1083", "ram_free_mb", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401553, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.789] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:17:53Z", "value" => "WIFI"} [2026-07-09 13:17:53.812] [DEBUG] QUERY OK db=22.8ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "WIFI", "network_type", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401554, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.813] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:17:53Z", "value" => "true"} [2026-07-09 13:17:53.829] [DEBUG] QUERY OK db=15.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "true", "kiosk_active", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401555, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.829] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:17:53Z", "value" => ""} [2026-07-09 13:17:53.844] [DEBUG] QUERY OK db=14.3ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:17:53Z", "sim_operator", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401556, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.844] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.867] [DEBUG] QUERY OK db=22.9ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "UNKNOWN", "sim_number", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401557, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.868] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.892] [DEBUG] QUERY OK db=23.5ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "UNKNOWN", "sim_iccid", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401558, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.892] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.914] [DEBUG] QUERY OK db=19.4ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "UNKNOWN", "sim_imsi", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401559, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.915] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.932] [DEBUG] QUERY OK db=15.8ms queue=0.3ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "UNKNOWN", "sim_iccid2", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401560, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.932] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:17:53Z", "value" => "UNKNOWN"} [2026-07-09 13:17:53.963] [DEBUG] QUERY OK db=30.1ms queue=0.2ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "UNKNOWN", "sim_imsi2", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401561, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.963] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "29"} [2026-07-09 13:17:53.988] [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-07-09T13:17:53Z", "29", "data_usage_mb", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:53.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401562, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:53.989] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:17:53Z", "value" => "0"} [2026-07-09 13:17:54.010] [DEBUG] QUERY OK db=19.0ms queue=1.7ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17:53Z", "0", "mobile_data_mb", 46842, ~N[2026-07-09 13:17:53], ~N[2026-07-09 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:54.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401563, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:53], updated_at: ~N[2026-07-09 13:17:53]}} [2026-07-09 13:17:54.011] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:17:54.026] [DEBUG] QUERY OK db=13.4ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:17: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46842, ~N[2026-07-09 13:17:54], ~N[2026-07-09 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:17:54.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401564, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:17:53Z", message: nil, status_log_id: 46842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:17:54], updated_at: ~N[2026-07-09 13:17:54]}} [2026-07-09 13:17:54.029] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:17:54.034] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:18:23.504] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:18:23.504] [INFO ] Incoming JSON payload: {"oid":"32ebf910-a17c-4bc4-bc07-785c7e7a9996","sn":"98251226730001","uploadTime":"2026-07-09T21:21:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:21:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:18:23.507] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "32ebf910-a17c-4bc4-bc07-785c7e7a9996", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:21:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:21:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:21:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:21:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:21:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:21:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:21:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:21:31Z", "vendor" => "morefun"} [2026-07-09 13:18:23.507] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:18:23.508] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:18:23.508] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:18:23.509] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1063.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-07-09 13:18:23.510] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=673.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-07-09 13:18:23.510] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:18:23.513] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:18:23.513] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:18:23.543] [DEBUG] QUERY OK source="tms_terminals" db=28.1ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:18:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:18:23.543] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:18:23.545] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:18:23.576] [DEBUG] QUERY OK source="tms_terminals" db=30.7ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:18:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:18:23.600] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=31.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "32ebf910-a17c-4bc4-bc07-785c7e7a9996", "2026-07-09T21:21:31Z", ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:18:23.600] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46843, oid: "32ebf910-a17c-4bc4-bc07-785c7e7a9996", upload_time: "2026-07-09T21:21:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]} [2026-07-09 13:18:23.600] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:21:31Z", "value" => "morefun"} [2026-07-09 13:18:23.626] [DEBUG] QUERY OK db=24.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "morefun", "vendor", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401565, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:21:31Z", "value" => "kiosk_launcher"} [2026-07-09 13:18:23.650] [DEBUG] QUERY OK db=23.2ms queue=0.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "kiosk_launcher", "model", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401566, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.651] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:21:31Z", "value" => "1.0"} [2026-07-09 13:18:23.683] [DEBUG] QUERY OK db=30.7ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "1.0", "app_version", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401567, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.683] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:21:31Z", "value" => "13"} [2026-07-09 13:18:23.707] [DEBUG] QUERY OK db=22.7ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "13", "android_version", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401568, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.707] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "924"} [2026-07-09 13:18:23.728] [DEBUG] QUERY OK db=20.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "924", "ram_free_mb", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401569, itemkey: "ram_free_mb", value: "924", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.729] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:21:31Z", "value" => "WIFI"} [2026-07-09 13:18:23.747] [DEBUG] QUERY OK db=16.9ms queue=0.4ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "WIFI", "network_type", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401570, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.748] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:21:31Z", "value" => "true"} [2026-07-09 13:18:23.787] [DEBUG] QUERY OK db=38.8ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "true", "kiosk_active", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401571, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.787] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:21:31Z", "value" => ""} [2026-07-09 13:18:23.852] [DEBUG] QUERY OK db=23.2ms queue=40.8ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:21:31Z", "sim_operator", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401572, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.852] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"} [2026-07-09 13:18:23.870] [DEBUG] QUERY OK db=17.7ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "UNKNOWN", "sim_number", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401573, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.871] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"} [2026-07-09 13:18:23.893] [DEBUG] QUERY OK db=21.7ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "UNKNOWN", "sim_iccid", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401574, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.893] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"} [2026-07-09 13:18:23.917] [DEBUG] QUERY OK db=23.9ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "UNKNOWN", "sim_imsi", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401575, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.918] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"} [2026-07-09 13:18:23.946] [DEBUG] QUERY OK db=28.0ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "UNKNOWN", "sim_iccid2", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401576, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.947] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:21:31Z", "value" => "UNKNOWN"} [2026-07-09 13:18:23.973] [DEBUG] QUERY OK db=26.1ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "UNKNOWN", "sim_imsi2", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401577, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.974] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "12"} [2026-07-09 13:18:23.986] [DEBUG] QUERY OK db=11.7ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "12", "data_usage_mb", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:23.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401578, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:23.986] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:21:31Z", "value" => "0"} [2026-07-09 13:18:24.023] [DEBUG] QUERY OK db=36.7ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:21:31Z", "0", "mobile_data_mb", 46843, ~N[2026-07-09 13:18:23], ~N[2026-07-09 13:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401579, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:23], updated_at: ~N[2026-07-09 13:18:23]}} [2026-07-09 13:18:24.024] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:18:24.070] [DEBUG] QUERY OK db=42.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-07-09T21:21: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46843, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401580, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:21:31Z", message: nil, status_log_id: 46843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.071] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:18:24.072] [INFO ] Incoming JSON payload: {"oid":"b479cd83-90f2-4acd-b1fd-7bbe7f8c6924","sn":"98250904730001","uploadTime":"2026-07-09T13:18:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"ram_free_mb","value":"1078","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:18:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:18:24.073] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b479cd83-90f2-4acd-b1fd-7bbe7f8c6924", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:18:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:18:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:18:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:18:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "1078"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:18:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:18:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:18:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:18:23Z", "vendor" => "morefun"} [2026-07-09 13:18:24.073] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:18:24.073] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:18:24.073] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:18:24.074] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:18:24.075] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=5.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-07-09 13:18:24.079] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=1.4ms idle=1.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-07-09 13:18:24.079] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:18:24.081] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:18:24.082] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=1.1ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:18:24.084] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:18:24.101] [DEBUG] QUERY OK source="tms_terminals" db=16.7ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:18:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:18:24.101] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:18:24.103] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=19.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:18:24.130] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:18:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:18:24.181] [DEBUG] QUERY OK db=50.4ms idle=28.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "b479cd83-90f2-4acd-b1fd-7bbe7f8c6924", "2026-07-09T13:18:23Z", ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:18:24.183] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46844, oid: "b479cd83-90f2-4acd-b1fd-7bbe7f8c6924", upload_time: "2026-07-09T13:18:23Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]} [2026-07-09 13:18:24.183] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:18:23Z", "value" => "morefun"} [2026-07-09 13:18:24.316] [DEBUG] QUERY OK db=132.0ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "morefun", "vendor", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401581, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.317] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:18:23Z", "value" => "kiosk_launcher"} [2026-07-09 13:18:24.422] [DEBUG] QUERY OK db=103.5ms idle=137.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "kiosk_launcher", "model", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401582, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.423] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:18:23Z", "value" => "1.0"} [2026-07-09 13:18:24.450] [DEBUG] QUERY OK db=25.9ms queue=0.7ms idle=106.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "1.0", "app_version", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401583, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.450] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:18:23Z", "value" => "13"} [2026-07-09 13:18:24.474] [DEBUG] QUERY OK db=23.1ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "13", "android_version", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401584, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.475] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "1078"} [2026-07-09 13:18:24.493] [DEBUG] QUERY OK db=16.5ms queue=1.5ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "1078", "ram_free_mb", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401585, itemkey: "ram_free_mb", value: "1078", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.493] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:18:23Z", "value" => "WIFI"} [2026-07-09 13:18:24.514] [DEBUG] QUERY OK db=20.4ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "WIFI", "network_type", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401586, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.516] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:18:23Z", "value" => "true"} [2026-07-09 13:18:24.546] [DEBUG] QUERY OK db=28.1ms queue=0.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "true", "kiosk_active", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401587, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.546] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:18:23Z", "value" => ""} [2026-07-09 13:18:24.574] [DEBUG] QUERY OK db=27.8ms queue=0.1ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:18:23Z", "sim_operator", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401588, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.575] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"} [2026-07-09 13:18:24.598] [DEBUG] QUERY OK db=23.0ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "UNKNOWN", "sim_number", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401589, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.600] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"} [2026-07-09 13:18:24.625] [DEBUG] QUERY OK db=23.4ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "UNKNOWN", "sim_iccid", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401590, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.626] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"} [2026-07-09 13:18:24.659] [DEBUG] QUERY OK db=30.9ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "UNKNOWN", "sim_imsi", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401591, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.662] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"} [2026-07-09 13:18:24.699] [DEBUG] QUERY OK db=35.7ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "UNKNOWN", "sim_iccid2", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401592, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.699] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:18:23Z", "value" => "UNKNOWN"} [2026-07-09 13:18:24.717] [DEBUG] QUERY OK db=16.5ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "UNKNOWN", "sim_imsi2", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401593, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.717] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "29"} [2026-07-09 13:18:24.738] [DEBUG] QUERY OK db=20.1ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "29", "data_usage_mb", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401594, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.738] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:18:23Z", "value" => "0"} [2026-07-09 13:18:24.777] [DEBUG] QUERY OK db=38.0ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:23Z", "0", "mobile_data_mb", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401595, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.780] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:18:24.813] [DEBUG] QUERY OK db=32.4ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46844, ~N[2026-07-09 13:18:24], ~N[2026-07-09 13:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:24.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401596, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:18:23Z", message: nil, status_log_id: 46844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:24], updated_at: ~N[2026-07-09 13:18:24]}} [2026-07-09 13:18:24.817] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:18:24.826] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:18:47.852] [INFO ] Received status update for terminal 61251020798002 [2026-07-09 13:18:47.852] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-09T13:18:46Z","org.device":[{"itemkey":"battery","value":68,"timestamp":"2026-07-09T13:18:46Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-09T13:18:46Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-09T13:18:46Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-09T13:18:46Z","message":""}]} [2026-07-09 13:18:47.852] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => 68}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:18:46Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-09T13:18:46Z"} [2026-07-09 13:18:47.852] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:18:47.853] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:18:47.853] [INFO ] Terminal updated: 61251020798002 [2026-07-09 13:18:47.898] [DEBUG] QUERY OK source="tms_terminals" db=43.8ms idle=852.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:18:47], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:18:47.899] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:18:47.930] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:18:47], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:18:47.953] [DEBUG] QUERY OK db=22.1ms idle=29.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-09T13:18:46Z", ~N[2026-07-09 13:18:47], ~N[2026-07-09 13:18:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:18:47.953] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46845, oid: "org-id-placeholder", upload_time: "2026-07-09T13:18:46Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:47], updated_at: ~N[2026-07-09 13:18:47]} [2026-07-09 13:18:47.953] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => 68} [2026-07-09 13:18:47.976] [DEBUG] QUERY OK db=22.9ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:46Z", "68", "battery", 46845, ~N[2026-07-09 13:18:47], ~N[2026-07-09 13:18:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:47.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401597, itemkey: "battery", value: "68", timestamp: "2026-07-09T13:18:46Z", message: nil, status_log_id: 46845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:47], updated_at: ~N[2026-07-09 13:18:47]}} [2026-07-09 13:18:47.977] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-09T13:18:46Z", "value" => 50} [2026-07-09 13:18:48.000] [DEBUG] QUERY OK db=22.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-09T13:18:46Z", "50", "memory", 46845, ~N[2026-07-09 13:18:47], ~N[2026-07-09 13:18:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:48.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401598, itemkey: "memory", value: "50", timestamp: "2026-07-09T13:18:46Z", message: "Normal", status_log_id: 46845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:47], updated_at: ~N[2026-07-09 13:18:47]}} [2026-07-09 13:18:48.002] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => 50} [2026-07-09 13:18:48.024] [DEBUG] QUERY OK db=21.8ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:46Z", "50", "cpu", 46845, ~N[2026-07-09 13:18:48], ~N[2026-07-09 13:18:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:48.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401599, itemkey: "cpu", value: "50", timestamp: "2026-07-09T13:18:46Z", message: nil, status_log_id: 46845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:48], updated_at: ~N[2026-07-09 13:18:48]}} [2026-07-09 13:18:48.024] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-09T13:18:46Z", "value" => "online"} [2026-07-09 13:18:48.039] [DEBUG] QUERY OK db=14.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:46Z", "online", "network", 46845, ~N[2026-07-09 13:18:48], ~N[2026-07-09 13:18:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:48.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401600, itemkey: "network", value: "online", timestamp: "2026-07-09T13:18:46Z", message: nil, status_log_id: 46845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:48], updated_at: ~N[2026-07-09 13:18:48]}} [2026-07-09 13:18:48.039] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-09 13:18:48.040] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-09 13:18:48.044] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=18.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:376 [2026-07-09 13:18:48.047] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:18:53.505] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:18:53.505] [INFO ] Incoming JSON payload: {"oid":"380db3c5-913a-4930-8add-0efcfbebdef5","sn":"98251226730001","uploadTime":"2026-07-09T21:22:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:22:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:18:53.506] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "380db3c5-913a-4930-8add-0efcfbebdef5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:22:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:22:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:22:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:22:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:22:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:22:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:22:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:22:01Z", "vendor" => "morefun"} [2026-07-09 13:18:53.506] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:18:53.506] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:18:53.507] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:18:53.510] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=1019.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-07-09 13:18:53.511] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=592.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-07-09 13:18:53.511] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:18:53.512] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:18:53.513] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:18:53.541] [DEBUG] QUERY OK source="tms_terminals" db=28.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:18:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:18:53.541] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:18:53.543] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:18:53.577] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:18:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:18:53.601] [DEBUG] QUERY OK db=23.5ms idle=34.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "380db3c5-913a-4930-8add-0efcfbebdef5", "2026-07-09T21:22:01Z", ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:18:53.602] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46846, oid: "380db3c5-913a-4930-8add-0efcfbebdef5", upload_time: "2026-07-09T21:22:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]} [2026-07-09 13:18:53.602] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:22:01Z", "value" => "morefun"} [2026-07-09 13:18:53.625] [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-07-09T21:22:01Z", "morefun", "vendor", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401601, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.626] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:22:01Z", "value" => "kiosk_launcher"} [2026-07-09 13:18:53.641] [DEBUG] QUERY OK db=15.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "kiosk_launcher", "model", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401602, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.642] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:22:01Z", "value" => "1.0"} [2026-07-09 13:18:53.676] [DEBUG] QUERY OK db=32.4ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "1.0", "app_version", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401603, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.677] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:22:01Z", "value" => "13"} [2026-07-09 13:18:53.700] [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-07-09T21:22:01Z", "13", "android_version", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401604, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.701] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "927"} [2026-07-09 13:18:53.728] [DEBUG] QUERY OK db=27.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "927", "ram_free_mb", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401605, itemkey: "ram_free_mb", value: "927", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.729] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:22:01Z", "value" => "WIFI"} [2026-07-09 13:18:53.744] [DEBUG] QUERY OK db=15.0ms queue=0.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "WIFI", "network_type", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401606, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.745] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:22:01Z", "value" => "true"} [2026-07-09 13:18:53.777] [DEBUG] QUERY OK db=29.9ms queue=0.3ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "true", "kiosk_active", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401607, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.778] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:22:01Z", "value" => ""} [2026-07-09 13:18:53.803] [DEBUG] QUERY OK db=23.9ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:22:01Z", "sim_operator", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401608, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.804] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"} [2026-07-09 13:18:53.835] [DEBUG] QUERY OK db=30.2ms queue=0.1ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "UNKNOWN", "sim_number", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401609, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.836] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"} [2026-07-09 13:18:53.848] [DEBUG] QUERY OK db=11.5ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "UNKNOWN", "sim_iccid", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401610, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.849] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"} [2026-07-09 13:18:53.875] [DEBUG] QUERY OK db=25.7ms queue=0.1ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "UNKNOWN", "sim_imsi", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401611, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.876] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"} [2026-07-09 13:18:53.901] [DEBUG] QUERY OK db=24.8ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "UNKNOWN", "sim_iccid2", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401612, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.902] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:22:01Z", "value" => "UNKNOWN"} [2026-07-09 13:18:53.935] [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-07-09T21:22:01Z", "UNKNOWN", "sim_imsi2", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401613, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.935] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "12"} [2026-07-09 13:18:53.951] [DEBUG] QUERY OK db=14.3ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "12", "data_usage_mb", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401614, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.952] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:22:01Z", "value" => "0"} [2026-07-09 13:18:53.971] [DEBUG] QUERY OK db=19.2ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:01Z", "0", "mobile_data_mb", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:53.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401615, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:53.974] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:18:54.008] [DEBUG] QUERY OK db=32.6ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46846, ~N[2026-07-09 13:18:53], ~N[2026-07-09 13:18:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401616, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:22:01Z", message: nil, status_log_id: 46846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:53], updated_at: ~N[2026-07-09 13:18:53]}} [2026-07-09 13:18:54.011] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:18:54.011] [INFO ] Incoming JSON payload: {"oid":"69af275e-84d2-4d43-a7a1-de2cf099cee8","sn":"98250904730001","uploadTime":"2026-07-09T13:18:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:18:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:18:54.012] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "69af275e-84d2-4d43-a7a1-de2cf099cee8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:18:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:18:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:18:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:18:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:18:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:18:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:18:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:18:53Z", "vendor" => "morefun"} [2026-07-09 13:18:54.012] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:18:54.012] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:18:54.012] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:18:54.013] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms 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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:18:54.014] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=0.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-07-09 13:18:54.014] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:18:54.016] [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.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:18:54.016] [DEBUG] QUERY OK source="tms_terminals" db=3.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:18:54.018] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:18:54.026] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:18:54.047] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms queue=0.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:18:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:18:54.047] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:18:54.049] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:18:54.065] [DEBUG] QUERY OK source="tms_terminals" db=16.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:18:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:18:54.086] [DEBUG] QUERY OK db=18.4ms idle=19.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "69af275e-84d2-4d43-a7a1-de2cf099cee8", "2026-07-09T13:18:53Z", ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:18:54.087] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46847, oid: "69af275e-84d2-4d43-a7a1-de2cf099cee8", upload_time: "2026-07-09T13:18:53Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]} [2026-07-09 13:18:54.088] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:18:53Z", "value" => "morefun"} [2026-07-09 13:18:54.123] [DEBUG] QUERY OK db=34.3ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "morefun", "vendor", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401617, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.123] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:18:53Z", "value" => "kiosk_launcher"} [2026-07-09 13:18:54.157] [DEBUG] QUERY OK db=33.0ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "kiosk_launcher", "model", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401618, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.158] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:18:53Z", "value" => "1.0"} [2026-07-09 13:18:54.175] [DEBUG] QUERY OK db=16.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "1.0", "app_version", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401619, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.175] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:18:53Z", "value" => "13"} [2026-07-09 13:18:54.253] [DEBUG] QUERY OK db=75.6ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "13", "android_version", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401620, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.254] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "1085"} [2026-07-09 13:18:54.286] [DEBUG] QUERY OK db=31.3ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "1085", "ram_free_mb", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401621, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.286] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:18:53Z", "value" => "WIFI"} [2026-07-09 13:18:54.324] [DEBUG] QUERY OK db=37.5ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "WIFI", "network_type", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401622, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.325] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:18:53Z", "value" => "true"} [2026-07-09 13:18:54.358] [DEBUG] QUERY OK db=31.6ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "true", "kiosk_active", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401623, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.359] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:18:53Z", "value" => ""} [2026-07-09 13:18:54.393] [DEBUG] QUERY OK db=34.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:18:53Z", "sim_operator", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401624, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.394] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"} [2026-07-09 13:18:54.495] [DEBUG] QUERY OK db=100.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "UNKNOWN", "sim_number", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401625, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.495] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"} [2026-07-09 13:18:54.534] [DEBUG] QUERY OK db=38.0ms queue=0.5ms idle=102.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "UNKNOWN", "sim_iccid", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401626, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.535] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"} [2026-07-09 13:18:54.567] [DEBUG] QUERY OK db=32.0ms queue=0.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "UNKNOWN", "sim_imsi", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401627, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.568] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"} [2026-07-09 13:18:54.580] [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-07-09T13:18:53Z", "UNKNOWN", "sim_iccid2", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401628, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.580] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:18:53Z", "value" => "UNKNOWN"} [2026-07-09 13:18:54.610] [DEBUG] QUERY OK db=29.3ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "UNKNOWN", "sim_imsi2", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401629, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.611] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "29"} [2026-07-09 13:18:54.634] [DEBUG] QUERY OK db=23.2ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "29", "data_usage_mb", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401630, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.635] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:18:53Z", "value" => "0"} [2026-07-09 13:18:54.659] [DEBUG] QUERY OK db=23.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:18:53Z", "0", "mobile_data_mb", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401631, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.660] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:18:54.692] [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-07-09T13:18: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46847, ~N[2026-07-09 13:18:54], ~N[2026-07-09 13:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:18:54.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401632, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:18:53Z", message: nil, status_log_id: 46847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:18:54], updated_at: ~N[2026-07-09 13:18:54]}} [2026-07-09 13:18:54.693] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:18:54.697] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:19:23.196] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:19:23.197] [INFO ] Incoming JSON payload: {"oid":"677f3dc1-2b6d-448b-a80c-06209bf658d4","sn":"98251226730001","uploadTime":"2026-07-09T21:22:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"ram_free_mb","value":"926","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:22:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:19:23.198] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "677f3dc1-2b6d-448b-a80c-06209bf658d4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:22:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:22:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:22:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:22:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "926"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:22:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:22:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:22:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:22:31Z", "vendor" => "morefun"} [2026-07-09 13:19:23.198] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:19:23.198] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:19:23.198] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:19:23.200] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms 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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:19:23.201] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.3ms idle=179.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-07-09 13:19:23.201] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:19:23.204] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=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.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:19:23.205] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:19:23.239] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms idle=6.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:19:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:19:23.239] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:19:23.241] [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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:19:23.267] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=0.1ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:19:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:19:23.301] [DEBUG] QUERY OK db=33.8ms idle=25.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "677f3dc1-2b6d-448b-a80c-06209bf658d4", "2026-07-09T21:22:31Z", ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:19:23.301] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46848, oid: "677f3dc1-2b6d-448b-a80c-06209bf658d4", upload_time: "2026-07-09T21:22:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]} [2026-07-09 13:19:23.302] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:22:31Z", "value" => "morefun"} [2026-07-09 13:19:23.322] [DEBUG] QUERY OK db=20.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "morefun", "vendor", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401633, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.323] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:22:31Z", "value" => "kiosk_launcher"} [2026-07-09 13:19:23.351] [DEBUG] QUERY OK db=27.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "kiosk_launcher", "model", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401634, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.351] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:22:31Z", "value" => "1.0"} [2026-07-09 13:19:23.376] [DEBUG] QUERY OK db=24.5ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "1.0", "app_version", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401635, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.377] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:22:31Z", "value" => "13"} [2026-07-09 13:19:23.421] [DEBUG] QUERY OK db=42.7ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "13", "android_version", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401636, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.422] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "926"} [2026-07-09 13:19:23.439] [DEBUG] QUERY OK db=16.5ms queue=0.1ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "926", "ram_free_mb", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401637, itemkey: "ram_free_mb", value: "926", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.439] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:22:31Z", "value" => "WIFI"} [2026-07-09 13:19:23.470] [DEBUG] QUERY OK db=31.0ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "WIFI", "network_type", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401638, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.471] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:22:31Z", "value" => "true"} [2026-07-09 13:19:23.505] [DEBUG] QUERY OK db=33.9ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "true", "kiosk_active", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401639, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.505] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:22:31Z", "value" => ""} [2026-07-09 13:19:23.529] [DEBUG] QUERY OK db=23.6ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:22:31Z", "sim_operator", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401640, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.530] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"} [2026-07-09 13:19:23.545] [DEBUG] QUERY OK db=15.0ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "UNKNOWN", "sim_number", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401641, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.546] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"} [2026-07-09 13:19:23.566] [DEBUG] QUERY OK db=20.3ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "UNKNOWN", "sim_iccid", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401642, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.567] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"} [2026-07-09 13:19:23.600] [DEBUG] QUERY OK db=32.3ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "UNKNOWN", "sim_imsi", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401643, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.601] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"} [2026-07-09 13:19:23.625] [DEBUG] QUERY OK db=23.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "UNKNOWN", "sim_iccid2", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401644, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.625] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:22:31Z", "value" => "UNKNOWN"} [2026-07-09 13:19:23.641] [DEBUG] QUERY OK db=16.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "UNKNOWN", "sim_imsi2", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401645, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.642] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "12"} [2026-07-09 13:19:23.660] [DEBUG] QUERY OK db=17.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22:31Z", "12", "data_usage_mb", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401646, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.660] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:22:31Z", "value" => "0"} [2026-07-09 13:19:23.687] [DEBUG] QUERY OK db=25.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-07-09T21:22:31Z", "0", "mobile_data_mb", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401647, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.688] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:19:23.737] [DEBUG] QUERY OK db=48.4ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:22: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46848, ~N[2026-07-09 13:19:23], ~N[2026-07-09 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:23.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401648, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:22:31Z", message: nil, status_log_id: 46848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:23], updated_at: ~N[2026-07-09 13:19:23]}} [2026-07-09 13:19:23.747] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=56.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:376 [2026-07-09 13:19:23.752] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:19:23.984] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:19:23.984] [INFO ] Incoming JSON payload: {"oid":"d1abd339-f7fa-4145-ba90-96fdb43343ef","sn":"98250904730001","uploadTime":"2026-07-09T13:19:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"ram_free_mb","value":"1078","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:19:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:19:23.985] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d1abd339-f7fa-4145-ba90-96fdb43343ef", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:19:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:19:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:19:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:19:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "1078"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:19:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:19:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:19:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:19:23Z", "vendor" => "morefun"} [2026-07-09 13:19:23.986] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:19:23.986] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:19:23.986] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:19:23.987] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=249.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-07-09 13:19:23.988] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=241.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-07-09 13:19:23.988] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:19:23.990] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:19:23.990] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:19:24.016] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:19:23], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:19:24.016] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:19:24.017] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:19:24.050] [DEBUG] QUERY OK source="tms_terminals" db=31.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:19:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:19:24.071] [DEBUG] QUERY OK db=20.8ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "d1abd339-f7fa-4145-ba90-96fdb43343ef", "2026-07-09T13:19:23Z", ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:19:24.071] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46849, oid: "d1abd339-f7fa-4145-ba90-96fdb43343ef", upload_time: "2026-07-09T13:19:23Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]} [2026-07-09 13:19:24.071] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:19:23Z", "value" => "morefun"} [2026-07-09 13:19:24.085] [DEBUG] QUERY OK db=13.2ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "morefun", "vendor", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401649, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.085] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:19:23Z", "value" => "kiosk_launcher"} [2026-07-09 13:19:24.103] [DEBUG] QUERY OK db=16.9ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "kiosk_launcher", "model", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401650, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.104] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:19:23Z", "value" => "1.0"} [2026-07-09 13:19:24.127] [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-07-09T13:19:23Z", "1.0", "app_version", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401651, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.128] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:19:23Z", "value" => "13"} [2026-07-09 13:19:24.151] [DEBUG] QUERY OK db=22.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "13", "android_version", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401652, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.151] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "1078"} [2026-07-09 13:19:24.307] [DEBUG] QUERY OK db=155.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "1078", "ram_free_mb", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401653, itemkey: "ram_free_mb", value: "1078", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.307] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:19:23Z", "value" => "WIFI"} [2026-07-09 13:19:24.339] [DEBUG] QUERY OK db=31.3ms idle=156.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "WIFI", "network_type", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401654, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.339] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:19:23Z", "value" => "true"} [2026-07-09 13:19:24.364] [DEBUG] QUERY OK db=24.3ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "true", "kiosk_active", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401655, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.365] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:19:23Z", "value" => ""} [2026-07-09 13:19:24.405] [DEBUG] QUERY OK db=39.4ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:19:23Z", "sim_operator", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401656, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.405] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"} [2026-07-09 13:19:24.417] [DEBUG] QUERY OK db=11.4ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "UNKNOWN", "sim_number", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401657, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.417] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"} [2026-07-09 13:19:24.449] [DEBUG] QUERY OK db=30.6ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "UNKNOWN", "sim_iccid", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401658, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.449] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"} [2026-07-09 13:19:24.473] [DEBUG] QUERY OK db=23.6ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "UNKNOWN", "sim_imsi", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401659, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.474] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"} [2026-07-09 13:19:24.503] [DEBUG] QUERY OK db=28.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "UNKNOWN", "sim_iccid2", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401660, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.504] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:19:23Z", "value" => "UNKNOWN"} [2026-07-09 13:19:24.516] [DEBUG] QUERY OK db=11.0ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "UNKNOWN", "sim_imsi2", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401661, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.516] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "29"} [2026-07-09 13:19:24.541] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "29", "data_usage_mb", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401662, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.541] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:19:23Z", "value" => "0"} [2026-07-09 13:19:24.569] [DEBUG] QUERY OK db=27.7ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:23Z", "0", "mobile_data_mb", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401663, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.571] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:19:24.603] [DEBUG] QUERY OK db=31.5ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46849, ~N[2026-07-09 13:19:24], ~N[2026-07-09 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:24.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401664, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:19:23Z", message: nil, status_log_id: 46849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:24], updated_at: ~N[2026-07-09 13:19:24]}} [2026-07-09 13:19:24.607] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=14.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:376 [2026-07-09 13:19:24.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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:19:53.885] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:19:53.885] [INFO ] Incoming JSON payload: {"oid":"386d6e98-2809-4570-bcd6-2638aff5f0ab","sn":"98251226730001","uploadTime":"2026-07-09T21:23:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"ram_free_mb","value":"928","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:23:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:19:53.888] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "386d6e98-2809-4570-bcd6-2638aff5f0ab", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:23:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:23:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:23:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:23:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "928"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:23:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:23:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:23:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:23:01Z", "vendor" => "morefun"} [2026-07-09 13:19:53.888] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:19:53.888] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:19:53.888] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:19:53.889] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1313.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-07-09 13:19:53.890] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=784.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-07-09 13:19:53.890] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:19:53.893] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:19:53.893] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:19:53.908] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:19:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:19:53.908] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:19:53.909] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:19:53.948] [DEBUG] QUERY OK source="tms_terminals" db=38.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:19:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:19:53.975] [DEBUG] QUERY OK db=26.3ms idle=39.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "386d6e98-2809-4570-bcd6-2638aff5f0ab", "2026-07-09T21:23:01Z", ~N[2026-07-09 13:19:53], ~N[2026-07-09 13:19:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:19:53.975] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46850, oid: "386d6e98-2809-4570-bcd6-2638aff5f0ab", upload_time: "2026-07-09T21:23:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:53], updated_at: ~N[2026-07-09 13:19:53]} [2026-07-09 13:19:53.976] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:23:01Z", "value" => "morefun"} [2026-07-09 13:19:53.992] [DEBUG] QUERY OK db=16.0ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "morefun", "vendor", 46850, ~N[2026-07-09 13:19:53], ~N[2026-07-09 13:19:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:53.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401665, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:53], updated_at: ~N[2026-07-09 13:19:53]}} [2026-07-09 13:19:53.993] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:23:01Z", "value" => "kiosk_launcher"} [2026-07-09 13:19:54.011] [DEBUG] QUERY OK db=17.6ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "kiosk_launcher", "model", 46850, ~N[2026-07-09 13:19:53], ~N[2026-07-09 13:19:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401666, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:53], updated_at: ~N[2026-07-09 13:19:53]}} [2026-07-09 13:19:54.012] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:23:01Z", "value" => "1.0"} [2026-07-09 13:19:54.035] [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-07-09T21:23:01Z", "1.0", "app_version", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401667, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.035] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:23:01Z", "value" => "13"} [2026-07-09 13:19:54.076] [DEBUG] QUERY OK db=39.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "13", "android_version", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401668, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.076] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "928"} [2026-07-09 13:19:54.097] [DEBUG] QUERY OK db=20.2ms queue=0.8ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "928", "ram_free_mb", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401669, itemkey: "ram_free_mb", value: "928", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.098] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:23:01Z", "value" => "WIFI"} [2026-07-09 13:19:54.109] [DEBUG] QUERY OK db=11.0ms idle=10.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "WIFI", "network_type", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401670, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.111] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:23:01Z", "value" => "true"} [2026-07-09 13:19:54.142] [DEBUG] QUERY OK db=31.2ms idle=4.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "true", "kiosk_active", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401671, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.145] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:23:01Z", "value" => ""} [2026-07-09 13:19:54.178] [DEBUG] QUERY OK db=32.7ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:23:01Z", "sim_operator", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401672, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.179] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.197] [DEBUG] QUERY OK db=17.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "UNKNOWN", "sim_number", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401673, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.197] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.220] [DEBUG] QUERY OK db=21.9ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "UNKNOWN", "sim_iccid", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401674, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.221] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.250] [DEBUG] QUERY OK db=28.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "UNKNOWN", "sim_imsi", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401675, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.251] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.289] [DEBUG] QUERY OK db=38.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "UNKNOWN", "sim_iccid2", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401676, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.290] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:23:01Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.334] [DEBUG] QUERY OK db=42.8ms queue=1.0ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "UNKNOWN", "sim_imsi2", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401677, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.334] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "12"} [2026-07-09 13:19:54.356] [DEBUG] QUERY OK db=21.6ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "12", "data_usage_mb", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401678, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.357] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:23:01Z", "value" => "0"} [2026-07-09 13:19:54.400] [DEBUG] QUERY OK db=42.5ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:01Z", "0", "mobile_data_mb", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401679, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.401] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:19:54.450] [DEBUG] QUERY OK db=48.6ms queue=0.1ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46850, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401680, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:23:01Z", message: nil, status_log_id: 46850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.451] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:19:54.451] [INFO ] Incoming JSON payload: {"oid":"3ea2316c-abd8-478f-a5c0-8b22901eaa7c","sn":"98250904730001","uploadTime":"2026-07-09T13:19:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"ram_free_mb","value":"1082","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:19:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:19:54.454] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3ea2316c-abd8-478f-a5c0-8b22901eaa7c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:19:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:19:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:19:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:19:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "1082"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:19:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:19:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:19:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:19:53Z", "vendor" => "morefun"} [2026-07-09 13:19:54.454] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:19:54.454] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:19:54.454] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.1ms idle=52.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:376 [2026-07-09 13:19:54.454] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:19:54.456] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.2ms idle=5.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-07-09 13:19:54.457] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:19:54.457] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:19:54.457] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:19:54.458] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:19:54.462] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:19:54.491] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:19:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:19:54.492] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:19:54.493] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:19:54.508] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:19:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:19:54.519] [DEBUG] QUERY OK db=10.8ms idle=15.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "3ea2316c-abd8-478f-a5c0-8b22901eaa7c", "2026-07-09T13:19:53Z", ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:19:54.520] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46851, oid: "3ea2316c-abd8-478f-a5c0-8b22901eaa7c", upload_time: "2026-07-09T13:19:53Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]} [2026-07-09 13:19:54.520] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:19:53Z", "value" => "morefun"} [2026-07-09 13:19:54.544] [DEBUG] QUERY OK db=22.9ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "morefun", "vendor", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401681, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.545] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:19:53Z", "value" => "kiosk_launcher"} [2026-07-09 13:19:54.571] [DEBUG] QUERY OK db=26.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "kiosk_launcher", "model", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401682, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.572] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:19:53Z", "value" => "1.0"} [2026-07-09 13:19:54.596] [DEBUG] QUERY OK db=23.7ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "1.0", "app_version", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401683, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.596] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:19:53Z", "value" => "13"} [2026-07-09 13:19:54.611] [DEBUG] QUERY OK db=14.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "13", "android_version", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401684, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.612] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "1082"} [2026-07-09 13:19:54.625] [DEBUG] QUERY OK db=13.2ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "1082", "ram_free_mb", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401685, itemkey: "ram_free_mb", value: "1082", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.626] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:19:53Z", "value" => "WIFI"} [2026-07-09 13:19:54.651] [DEBUG] QUERY OK db=24.7ms queue=0.2ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "WIFI", "network_type", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401686, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.652] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:19:53Z", "value" => "true"} [2026-07-09 13:19:54.695] [DEBUG] QUERY OK db=42.8ms queue=0.1ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "true", "kiosk_active", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401687, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.695] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:19:53Z", "value" => ""} [2026-07-09 13:19:54.714] [DEBUG] QUERY OK db=18.3ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:19:53Z", "sim_operator", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401688, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.714] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.739] [DEBUG] QUERY OK db=20.3ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "UNKNOWN", "sim_number", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401689, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.739] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.761] [DEBUG] QUERY OK db=21.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "UNKNOWN", "sim_iccid", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401690, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.761] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.786] [DEBUG] QUERY OK db=23.6ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "UNKNOWN", "sim_imsi", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401691, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.786] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.810] [DEBUG] QUERY OK db=23.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "UNKNOWN", "sim_iccid2", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401692, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.810] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:19:53Z", "value" => "UNKNOWN"} [2026-07-09 13:19:54.829] [DEBUG] QUERY OK db=18.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "UNKNOWN", "sim_imsi2", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401693, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.829] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "29"} [2026-07-09 13:19:54.841] [DEBUG] QUERY OK db=11.4ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "29", "data_usage_mb", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401694, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.841] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:19:53Z", "value" => "0"} [2026-07-09 13:19:54.862] [DEBUG] QUERY OK db=20.5ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19:53Z", "0", "mobile_data_mb", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401695, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.865] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:19:54.900] [DEBUG] QUERY OK db=34.2ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:19: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46851, ~N[2026-07-09 13:19:54], ~N[2026-07-09 13:19:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:19:54.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401696, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:19:53Z", message: nil, status_log_id: 46851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:19:54], updated_at: ~N[2026-07-09 13:19:54]}} [2026-07-09 13:19:54.904] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:19:54.927] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:20:23.813] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:20:23.813] [INFO ] Incoming JSON payload: {"oid":"da7d42e0-7f2e-46b8-bdb0-50b8d3dbf652","sn":"98251226730001","uploadTime":"2026-07-09T21:23:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:23:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:20:23.816] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "da7d42e0-7f2e-46b8-bdb0-50b8d3dbf652", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:23:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:23:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:23:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:23:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:23:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:23:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:23:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:23:31Z", "vendor" => "morefun"} [2026-07-09 13:20:23.816] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:20:23.819] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:20:23.819] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:20:23.820] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=982.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-07-09 13:20:23.822] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.5ms idle=625.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-07-09 13:20:23.822] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:20:23.823] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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-07-09 13:20:23.824] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:20:23.849] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:20:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:20:23.849] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:20:23.851] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:20:23.869] [DEBUG] QUERY OK source="tms_terminals" db=18.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:20:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:20:23.894] [DEBUG] QUERY OK db=25.0ms idle=18.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "da7d42e0-7f2e-46b8-bdb0-50b8d3dbf652", "2026-07-09T21:23:31Z", ~N[2026-07-09 13:20:23], ~N[2026-07-09 13:20:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:20:23.895] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46852, oid: "da7d42e0-7f2e-46b8-bdb0-50b8d3dbf652", upload_time: "2026-07-09T21:23:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:23], updated_at: ~N[2026-07-09 13:20:23]} [2026-07-09 13:20:23.895] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:23:31Z", "value" => "morefun"} [2026-07-09 13:20:23.931] [DEBUG] QUERY OK db=35.3ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "morefun", "vendor", 46852, ~N[2026-07-09 13:20:23], ~N[2026-07-09 13:20:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:23.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401697, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:23], updated_at: ~N[2026-07-09 13:20:23]}} [2026-07-09 13:20:23.931] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:23:31Z", "value" => "kiosk_launcher"} [2026-07-09 13:20:23.956] [DEBUG] QUERY OK db=24.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "kiosk_launcher", "model", 46852, ~N[2026-07-09 13:20:23], ~N[2026-07-09 13:20:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:23.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401698, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:23], updated_at: ~N[2026-07-09 13:20:23]}} [2026-07-09 13:20:23.956] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:23:31Z", "value" => "1.0"} [2026-07-09 13:20:23.979] [DEBUG] QUERY OK db=22.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "1.0", "app_version", 46852, ~N[2026-07-09 13:20:23], ~N[2026-07-09 13:20:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:23.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401699, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:23], updated_at: ~N[2026-07-09 13:20:23]}} [2026-07-09 13:20:23.983] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:23:31Z", "value" => "13"} [2026-07-09 13:20:24.004] [DEBUG] QUERY OK db=20.0ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "13", "android_version", 46852, ~N[2026-07-09 13:20:23], ~N[2026-07-09 13:20:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401700, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:23], updated_at: ~N[2026-07-09 13:20:23]}} [2026-07-09 13:20:24.005] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "927"} [2026-07-09 13:20:24.032] [DEBUG] QUERY OK db=26.7ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "927", "ram_free_mb", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401701, itemkey: "ram_free_mb", value: "927", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.033] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:23:31Z", "value" => "WIFI"} [2026-07-09 13:20:24.068] [DEBUG] QUERY OK db=32.9ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "WIFI", "network_type", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401702, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.069] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:23:31Z", "value" => "true"} [2026-07-09 13:20:24.093] [DEBUG] QUERY OK db=23.0ms decode=0.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "true", "kiosk_active", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401703, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.094] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:23:31Z", "value" => ""} [2026-07-09 13:20:24.117] [DEBUG] QUERY OK db=22.2ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:23:31Z", "sim_operator", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401704, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.117] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.141] [DEBUG] QUERY OK db=22.9ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "UNKNOWN", "sim_number", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401705, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.143] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.186] [DEBUG] QUERY OK db=40.4ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "UNKNOWN", "sim_iccid", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401706, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.187] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.223] [DEBUG] QUERY OK db=33.7ms queue=1.7ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "UNKNOWN", "sim_imsi", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401707, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.225] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.255] [DEBUG] QUERY OK db=26.7ms queue=1.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "UNKNOWN", "sim_iccid2", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401708, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.256] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:23:31Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.285] [DEBUG] QUERY OK db=28.9ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "UNKNOWN", "sim_imsi2", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401709, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.285] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "12"} [2026-07-09 13:20:24.311] [DEBUG] QUERY OK db=25.7ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "12", "data_usage_mb", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401710, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.312] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:23:31Z", "value" => "0"} [2026-07-09 13:20:24.327] [DEBUG] QUERY OK db=14.9ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23:31Z", "0", "mobile_data_mb", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401711, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.328] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:20:24.353] [DEBUG] QUERY OK db=24.1ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:23: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46852, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401712, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:23:31Z", message: nil, status_log_id: 46852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.355] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:20:24.355] [INFO ] Incoming JSON payload: {"oid":"c46330ad-59a1-4d2c-9149-8c748b37e3d5","sn":"98250904730001","uploadTime":"2026-07-09T13:20:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:20:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:20:24.356] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c46330ad-59a1-4d2c-9149-8c748b37e3d5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:20:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:20:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:20:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:20:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:20:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:20:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:20:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:20:23Z", "vendor" => "morefun"} [2026-07-09 13:20:24.356] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:20:24.356] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:20:24.357] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:20:24.358] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:20:24.360] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=5.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-07-09 13:20:24.363] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:20:24.363] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:20:24.364] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:20:24.366] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.0ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:20:24.366] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:20:24.391] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:20:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:20:24.391] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:20:24.392] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:20:24.425] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:20:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:20:24.442] [DEBUG] QUERY OK db=16.8ms idle=33.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "c46330ad-59a1-4d2c-9149-8c748b37e3d5", "2026-07-09T13:20:23Z", ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:20:24.443] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46853, oid: "c46330ad-59a1-4d2c-9149-8c748b37e3d5", upload_time: "2026-07-09T13:20:23Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]} [2026-07-09 13:20:24.444] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:20:23Z", "value" => "morefun"} [2026-07-09 13:20:24.473] [DEBUG] QUERY OK db=28.6ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "morefun", "vendor", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401713, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.474] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:20:23Z", "value" => "kiosk_launcher"} [2026-07-09 13:20:24.510] [DEBUG] QUERY OK db=35.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "kiosk_launcher", "model", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401714, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.510] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:20:23Z", "value" => "1.0"} [2026-07-09 13:20:24.539] [DEBUG] QUERY OK db=28.6ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "1.0", "app_version", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401715, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.540] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:20:23Z", "value" => "13"} [2026-07-09 13:20:24.552] [DEBUG] QUERY OK db=11.3ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "13", "android_version", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401716, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.552] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "1081"} [2026-07-09 13:20:24.649] [DEBUG] QUERY OK db=96.3ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "1081", "ram_free_mb", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401717, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.650] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:20:23Z", "value" => "WIFI"} [2026-07-09 13:20:24.683] [DEBUG] QUERY OK db=33.5ms idle=97.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "WIFI", "network_type", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401718, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.684] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:20:23Z", "value" => "true"} [2026-07-09 13:20:24.704] [DEBUG] QUERY OK db=19.7ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "true", "kiosk_active", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401719, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.705] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:20:23Z", "value" => ""} [2026-07-09 13:20:24.720] [DEBUG] QUERY OK db=14.6ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:20:23Z", "sim_operator", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401720, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.720] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.744] [DEBUG] QUERY OK db=22.8ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "UNKNOWN", "sim_number", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401721, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.745] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.769] [DEBUG] QUERY OK db=24.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "UNKNOWN", "sim_iccid", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401722, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.771] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.804] [DEBUG] QUERY OK db=33.4ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "UNKNOWN", "sim_imsi", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401723, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.805] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.821] [DEBUG] QUERY OK db=15.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "UNKNOWN", "sim_iccid2", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401724, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.821] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:20:23Z", "value" => "UNKNOWN"} [2026-07-09 13:20:24.847] [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-07-09T13:20:23Z", "UNKNOWN", "sim_imsi2", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401725, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.848] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "29"} [2026-07-09 13:20:24.872] [DEBUG] QUERY OK db=23.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "29", "data_usage_mb", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401726, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.872] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:20:23Z", "value" => "0"} [2026-07-09 13:20:24.901] [DEBUG] QUERY OK db=28.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:23Z", "0", "mobile_data_mb", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401727, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.902] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:20:24.936] [DEBUG] QUERY OK db=33.1ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46853, ~N[2026-07-09 13:20:24], ~N[2026-07-09 13:20:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:24.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401728, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:20:23Z", message: nil, status_log_id: 46853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:24], updated_at: ~N[2026-07-09 13:20:24]}} [2026-07-09 13:20:24.943] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.2ms idle=40.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:376 [2026-07-09 13:20:24.957] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:20:41.869] [INFO ] Performing scheduled filter cache refresh... [2026-07-09 13:20:41.870] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=852.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-07-09 13:20:41.872] [DEBUG] QUERY OK source="filter_usage" db=0.8ms idle=608.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-07-09 13:20:41.872] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-09 13:20:53.717] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:20:53.717] [INFO ] Incoming JSON payload: {"oid":"55c47612-62a9-4cd7-a8b7-54a15771dc6b","sn":"98251226730001","uploadTime":"2026-07-09T21:24:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:24:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:20:53.718] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "55c47612-62a9-4cd7-a8b7-54a15771dc6b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:24:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:24:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:24:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:24:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:24:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:24:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:24:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:24:01Z", "vendor" => "morefun"} [2026-07-09 13:20:53.718] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:20:53.719] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:20:53.719] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:20:53.719] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1056.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-07-09 13:20:53.720] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=419.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-07-09 13:20:53.720] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:20:53.721] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:20:53.721] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:20:53.755] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:20:53.755] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:20:53.757] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=34.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:20:53.779] [DEBUG] QUERY OK source="tms_terminals" db=21.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:20:53.793] [DEBUG] QUERY OK db=13.4ms idle=22.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "55c47612-62a9-4cd7-a8b7-54a15771dc6b", "2026-07-09T21:24:01Z", ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:20:53.794] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46854, oid: "55c47612-62a9-4cd7-a8b7-54a15771dc6b", upload_time: "2026-07-09T21:24:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]} [2026-07-09 13:20:53.794] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:24:01Z", "value" => "morefun"} [2026-07-09 13:20:53.815] [DEBUG] QUERY OK db=20.6ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "morefun", "vendor", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401729, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.817] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:24:01Z", "value" => "kiosk_launcher"} [2026-07-09 13:20:53.842] [DEBUG] QUERY OK db=25.1ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "kiosk_launcher", "model", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401730, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.843] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:24:01Z", "value" => "1.0"} [2026-07-09 13:20:53.878] [DEBUG] QUERY OK db=34.0ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "1.0", "app_version", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401731, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.879] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:24:01Z", "value" => "13"} [2026-07-09 13:20:53.897] [DEBUG] QUERY OK db=16.0ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "13", "android_version", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401732, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.897] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "925"} [2026-07-09 13:20:53.912] [DEBUG] QUERY OK db=14.3ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "925", "ram_free_mb", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401733, itemkey: "ram_free_mb", value: "925", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.913] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:24:01Z", "value" => "WIFI"} [2026-07-09 13:20:53.947] [DEBUG] QUERY OK db=32.8ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "WIFI", "network_type", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401734, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.948] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:24:01Z", "value" => "true"} [2026-07-09 13:20:53.974] [DEBUG] QUERY OK db=26.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "true", "kiosk_active", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:53.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401735, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:53.975] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:24:01Z", "value" => ""} [2026-07-09 13:20:54.001] [DEBUG] QUERY OK db=26.2ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:24:01Z", "sim_operator", 46854, ~N[2026-07-09 13:20:53], ~N[2026-07-09 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401736, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:53], updated_at: ~N[2026-07-09 13:20:53]}} [2026-07-09 13:20:54.002] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.015] [DEBUG] QUERY OK db=12.4ms queue=0.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "UNKNOWN", "sim_number", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401737, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.015] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.038] [DEBUG] QUERY OK db=22.5ms queue=0.1ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "UNKNOWN", "sim_iccid", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401738, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.039] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.063] [DEBUG] QUERY OK db=24.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "UNKNOWN", "sim_imsi", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401739, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.064] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.098] [DEBUG] QUERY OK db=33.6ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "UNKNOWN", "sim_iccid2", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401740, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.098] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:24:01Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.115] [DEBUG] QUERY OK db=15.9ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "UNKNOWN", "sim_imsi2", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401741, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.115] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "12"} [2026-07-09 13:20:54.138] [DEBUG] QUERY OK db=22.8ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:01Z", "12", "data_usage_mb", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401742, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.139] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:24:01Z", "value" => "0"} [2026-07-09 13:20:54.163] [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-07-09T21:24:01Z", "0", "mobile_data_mb", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401743, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.164] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:20:54.208] [DEBUG] QUERY OK db=42.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46854, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401744, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:24:01Z", message: nil, status_log_id: 46854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.210] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=45.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:376 [2026-07-09 13:20:54.215] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:20:54.261] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:20:54.261] [INFO ] Incoming JSON payload: {"oid":"0f047e81-0c6c-449d-803a-e5630515568a","sn":"98250904730001","uploadTime":"2026-07-09T13:20:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"ram_free_mb","value":"1078","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:20:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:20:54.263] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0f047e81-0c6c-449d-803a-e5630515568a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:20:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:20:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:20:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:20:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "1078"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:20:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:20:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:20:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:20:53Z", "vendor" => "morefun"} [2026-07-09 13:20:54.263] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:20:54.263] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:20:54.263] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:20:54.264] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=56.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:20:54.265] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=54.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-07-09 13:20:54.266] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:20:54.267] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:20:54.268] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:20:54.345] [DEBUG] QUERY OK source="tms_terminals" db=77.5ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:20:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:20:54.346] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:20:54.347] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:20:54.372] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:20:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:20:54.422] [DEBUG] QUERY OK db=49.9ms idle=25.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "0f047e81-0c6c-449d-803a-e5630515568a", "2026-07-09T13:20:53Z", ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:20:54.422] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46855, oid: "0f047e81-0c6c-449d-803a-e5630515568a", upload_time: "2026-07-09T13:20:53Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]} [2026-07-09 13:20:54.423] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:20:53Z", "value" => "morefun"} [2026-07-09 13:20:54.444] [DEBUG] QUERY OK db=20.5ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "morefun", "vendor", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401745, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.444] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:20:53Z", "value" => "kiosk_launcher"} [2026-07-09 13:20:54.456] [DEBUG] QUERY OK db=11.0ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "kiosk_launcher", "model", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401746, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.456] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:20:53Z", "value" => "1.0"} [2026-07-09 13:20:54.489] [DEBUG] QUERY OK db=32.0ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "1.0", "app_version", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401747, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.489] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:20:53Z", "value" => "13"} [2026-07-09 13:20:54.522] [DEBUG] QUERY OK db=32.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "13", "android_version", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401748, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.523] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "1078"} [2026-07-09 13:20:54.539] [DEBUG] QUERY OK db=16.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "1078", "ram_free_mb", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401749, itemkey: "ram_free_mb", value: "1078", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.540] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:20:53Z", "value" => "WIFI"} [2026-07-09 13:20:54.556] [DEBUG] QUERY OK db=14.9ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "WIFI", "network_type", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401750, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.556] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:20:53Z", "value" => "true"} [2026-07-09 13:20:54.592] [DEBUG] QUERY OK db=35.5ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "true", "kiosk_active", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401751, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.592] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:20:53Z", "value" => ""} [2026-07-09 13:20:54.627] [DEBUG] QUERY OK db=34.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:20:53Z", "sim_operator", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401752, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.627] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.646] [DEBUG] QUERY OK db=18.5ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "UNKNOWN", "sim_number", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401753, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.646] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.660] [DEBUG] QUERY OK db=12.9ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "UNKNOWN", "sim_iccid", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401754, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.662] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.688] [DEBUG] QUERY OK db=25.8ms queue=0.4ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "UNKNOWN", "sim_imsi", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401755, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.689] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.723] [DEBUG] QUERY OK db=33.9ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "UNKNOWN", "sim_iccid2", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401756, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.723] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:20:53Z", "value" => "UNKNOWN"} [2026-07-09 13:20:54.755] [DEBUG] QUERY OK db=29.7ms queue=0.6ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "UNKNOWN", "sim_imsi2", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401757, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.756] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "29"} [2026-07-09 13:20:54.770] [DEBUG] QUERY OK db=14.2ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "29", "data_usage_mb", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401758, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.771] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:20:53Z", "value" => "0"} [2026-07-09 13:20:54.794] [DEBUG] QUERY OK db=22.5ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20:53Z", "0", "mobile_data_mb", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401759, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.795] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:20:54.838] [DEBUG] QUERY OK db=42.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:20: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46855, ~N[2026-07-09 13:20:54], ~N[2026-07-09 13:20:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:20:54.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401760, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:20:53Z", message: nil, status_log_id: 46855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:20:54], updated_at: ~N[2026-07-09 13:20:54]}} [2026-07-09 13:20:54.841] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=46.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:376 [2026-07-09 13:20:54.847] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:21:24.340] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:21:24.340] [INFO ] Incoming JSON payload: {"oid":"957f5529-d585-409e-b805-a6002e1124be","sn":"98250904730001","uploadTime":"2026-07-09T13:21:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:21:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:21:24.341] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "957f5529-d585-409e-b805-a6002e1124be", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:21:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:21:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:21:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:21:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:21:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:21:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:21:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:21:24Z", "vendor" => "morefun"} [2026-07-09 13:21:24.342] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:21:24.342] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:21:24.342] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:21:24.343] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=934.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-07-09 13:21:24.343] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=313.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-07-09 13:21:24.343] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:21:24.346] [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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:21:24.346] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:21:24.387] [DEBUG] QUERY OK source="tms_terminals" db=39.8ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:21:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:21:24.387] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:21:24.388] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:21:24.408] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:21:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:21:24.433] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=0.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "957f5529-d585-409e-b805-a6002e1124be", "2026-07-09T13:21:24Z", ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:21:24.434] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46856, oid: "957f5529-d585-409e-b805-a6002e1124be", upload_time: "2026-07-09T13:21:24Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]} [2026-07-09 13:21:24.434] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:21:24Z", "value" => "morefun"} [2026-07-09 13:21:24.463] [DEBUG] QUERY OK db=29.0ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "morefun", "vendor", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401761, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.464] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:21:24Z", "value" => "kiosk_launcher"} [2026-07-09 13:21:24.502] [DEBUG] QUERY OK db=37.5ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "kiosk_launcher", "model", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401762, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.502] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:21:24Z", "value" => "1.0"} [2026-07-09 13:21:24.524] [DEBUG] QUERY OK db=21.1ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "1.0", "app_version", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401763, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.524] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:21:24Z", "value" => "13"} [2026-07-09 13:21:24.550] [DEBUG] QUERY OK db=25.3ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "13", "android_version", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401764, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.550] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "1081"} [2026-07-09 13:21:24.583] [DEBUG] QUERY OK db=32.6ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "1081", "ram_free_mb", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401765, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.584] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:21:24Z", "value" => "WIFI"} [2026-07-09 13:21:24.608] [DEBUG] QUERY OK db=23.3ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "WIFI", "network_type", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401766, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.608] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:21:24Z", "value" => "true"} [2026-07-09 13:21:24.631] [DEBUG] QUERY OK db=22.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "true", "kiosk_active", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401767, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.633] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:21:24Z", "value" => ""} [2026-07-09 13:21:24.655] [DEBUG] QUERY OK db=21.4ms queue=0.4ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:21:24Z", "sim_operator", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401768, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.656] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"} [2026-07-09 13:21:24.688] [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-07-09T13:21:24Z", "UNKNOWN", "sim_number", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401769, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.689] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"} [2026-07-09 13:21:24.727] [DEBUG] QUERY OK db=32.9ms queue=3.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "UNKNOWN", "sim_iccid", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401770, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.728] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"} [2026-07-09 13:21:24.751] [DEBUG] QUERY OK db=23.1ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "UNKNOWN", "sim_imsi", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401771, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.752] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"} [2026-07-09 13:21:24.773] [DEBUG] QUERY OK db=20.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "UNKNOWN", "sim_iccid2", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401772, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.773] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:21:24Z", "value" => "UNKNOWN"} [2026-07-09 13:21:24.806] [DEBUG] QUERY OK db=32.2ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "UNKNOWN", "sim_imsi2", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401773, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.807] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "29"} [2026-07-09 13:21:24.835] [DEBUG] QUERY OK db=28.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "29", "data_usage_mb", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401774, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.836] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:21:24Z", "value" => "0"} [2026-07-09 13:21:24.865] [DEBUG] QUERY OK db=28.3ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:24Z", "0", "mobile_data_mb", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401775, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.866] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:21:24.882] [DEBUG] QUERY OK db=14.7ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46856, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:24.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401776, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:21:24Z", message: nil, status_log_id: 46856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:24.884] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:21:24.884] [INFO ] Incoming JSON payload: {"oid":"56774232-2087-4f3f-8ed7-952196317975","sn":"98251226730001","uploadTime":"2026-07-09T21:24:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:24:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:21:24.886] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "56774232-2087-4f3f-8ed7-952196317975", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:24:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:24:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:24:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:24:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:24:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:24:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:24:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:24:31Z", "vendor" => "morefun"} [2026-07-09 13:21:24.886] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:21:24.886] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:21:24.886] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:21:24.886] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:21:24.888] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=4.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:21:24.894] [DEBUG] QUERY OK source="parameter_templates" db=5.3ms idle=2.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-07-09 13:21:24.894] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:21:24.895] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=6.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:21:24.896] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:21:24.900] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:21:24.925] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:21:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:21:24.925] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:21:24.926] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=30.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:697 [2026-07-09 13:21:24.961] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:21:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:21:24.986] [DEBUG] QUERY OK db=23.7ms idle=35.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "56774232-2087-4f3f-8ed7-952196317975", "2026-07-09T21:24:31Z", ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:21:24.986] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46857, oid: "56774232-2087-4f3f-8ed7-952196317975", upload_time: "2026-07-09T21:24:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]} [2026-07-09 13:21:24.986] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:24:31Z", "value" => "morefun"} [2026-07-09 13:21:25.012] [DEBUG] QUERY OK db=24.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "morefun", "vendor", 46857, ~N[2026-07-09 13:21:24], ~N[2026-07-09 13:21:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401777, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:24], updated_at: ~N[2026-07-09 13:21:24]}} [2026-07-09 13:21:25.012] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:24:31Z", "value" => "kiosk_launcher"} [2026-07-09 13:21:25.043] [DEBUG] QUERY OK db=30.2ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "kiosk_launcher", "model", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401778, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.044] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:24:31Z", "value" => "1.0"} [2026-07-09 13:21:25.076] [DEBUG] QUERY OK db=30.9ms queue=0.6ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "1.0", "app_version", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401779, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.077] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:24:31Z", "value" => "13"} [2026-07-09 13:21:25.102] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "13", "android_version", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401780, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.103] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "924"} [2026-07-09 13:21:25.128] [DEBUG] QUERY OK db=24.7ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "924", "ram_free_mb", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401781, itemkey: "ram_free_mb", value: "924", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.129] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:24:31Z", "value" => "WIFI"} [2026-07-09 13:21:25.163] [DEBUG] QUERY OK db=33.5ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "WIFI", "network_type", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401782, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.164] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:24:31Z", "value" => "true"} [2026-07-09 13:21:25.195] [DEBUG] QUERY OK db=30.7ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "true", "kiosk_active", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401783, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.197] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:24:31Z", "value" => ""} [2026-07-09 13:21:25.251] [DEBUG] QUERY OK db=53.9ms queue=0.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:24:31Z", "sim_operator", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401784, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.252] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"} [2026-07-09 13:21:25.312] [DEBUG] QUERY OK db=59.5ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "UNKNOWN", "sim_number", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401785, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.313] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"} [2026-07-09 13:21:25.347] [DEBUG] QUERY OK db=33.6ms queue=0.2ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "UNKNOWN", "sim_iccid", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401786, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"} [2026-07-09 13:21:25.403] [DEBUG] QUERY OK db=55.5ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "UNKNOWN", "sim_imsi", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401787, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.404] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"} [2026-07-09 13:21:25.461] [DEBUG] QUERY OK db=56.8ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "UNKNOWN", "sim_iccid2", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401788, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.467] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:24:31Z", "value" => "UNKNOWN"} [2026-07-09 13:21:25.500] [DEBUG] QUERY OK db=31.8ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "UNKNOWN", "sim_imsi2", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401789, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.500] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "12"} [2026-07-09 13:21:25.533] [DEBUG] QUERY OK db=32.5ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "12", "data_usage_mb", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401790, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.536] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:24:31Z", "value" => "0"} [2026-07-09 13:21:25.568] [DEBUG] QUERY OK db=31.9ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24:31Z", "0", "mobile_data_mb", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401791, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.571] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:21:25.625] [DEBUG] QUERY OK db=49.1ms queue=0.2ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:24: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46857, ~N[2026-07-09 13:21:25], ~N[2026-07-09 13:21:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:25.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401792, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:24:31Z", message: nil, status_log_id: 46857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:25], updated_at: ~N[2026-07-09 13:21:25]}} [2026-07-09 13:21:25.633] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=62.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:376 [2026-07-09 13:21:25.640] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:21:35.976] [INFO ] Running offline device check... [2026-07-09 13:21:35.976] [INFO ] Starting offline device check... [2026-07-09 13:21:35.978] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1539.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:747 [2026-07-09 13:21:35.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=539.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:21:35.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:35.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=1.6ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:35.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.002] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.002] [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:762 [2026-07-09 13:21:36.005] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:762 [2026-07-09 13:21:36.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.2ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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:762 [2026-07-09 13:21:36.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:762 [2026-07-09 13:21:36.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.054] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.058] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.058] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=15.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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:762 [2026-07-09 13:21:36.076] [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:762 [2026-07-09 13:21:36.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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:762 [2026-07-09 13:21:36.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.088] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.099] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.100] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.106] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.107] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.110] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.111] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-09 13:21:36.112] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-09 13:21:36.112] [INFO ] Offline device check completed successfully [2026-07-09 13:21:54.037] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:21:54.037] [INFO ] Incoming JSON payload: {"oid":"c37b61d1-7e32-49e3-be56-b92abd31e114","sn":"98251226730001","uploadTime":"2026-07-09T21:25:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:25:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:21:54.038] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c37b61d1-7e32-49e3-be56-b92abd31e114", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:25:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:25:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:25:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:25:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:25:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:25:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:25:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:25:01Z", "vendor" => "morefun"} [2026-07-09 13:21:54.038] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:21:54.038] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:21:54.039] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:21:54.039] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1285.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-07-09 13:21:54.040] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=551.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-07-09 13:21:54.040] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:21:54.041] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:21:54.041] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:21:54.073] [DEBUG] QUERY OK source="tms_terminals" db=30.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:21:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:21:54.073] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:21:54.075] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:21:54.099] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:21:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:21:54.134] [DEBUG] QUERY OK db=34.4ms idle=24.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c37b61d1-7e32-49e3-be56-b92abd31e114", "2026-07-09T21:25:01Z", ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:21:54.134] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46858, oid: "c37b61d1-7e32-49e3-be56-b92abd31e114", upload_time: "2026-07-09T21:25:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]} [2026-07-09 13:21:54.134] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:25:01Z", "value" => "morefun"} [2026-07-09 13:21:54.161] [DEBUG] QUERY OK db=26.5ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "morefun", "vendor", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401793, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.161] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:25:01Z", "value" => "kiosk_launcher"} [2026-07-09 13:21:54.179] [DEBUG] QUERY OK db=16.9ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "kiosk_launcher", "model", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401794, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.181] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:25:01Z", "value" => "1.0"} [2026-07-09 13:21:54.218] [DEBUG] QUERY OK db=35.8ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "1.0", "app_version", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401795, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.218] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:25:01Z", "value" => "13"} [2026-07-09 13:21:54.311] [DEBUG] QUERY OK db=92.1ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "13", "android_version", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401796, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.317] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "923"} [2026-07-09 13:21:54.347] [DEBUG] QUERY OK db=29.6ms idle=99.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "923", "ram_free_mb", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401797, itemkey: "ram_free_mb", value: "923", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.347] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:25:01Z", "value" => "WIFI"} [2026-07-09 13:21:54.381] [DEBUG] QUERY OK db=33.1ms queue=0.2ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "WIFI", "network_type", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401798, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.385] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:25:01Z", "value" => "true"} [2026-07-09 13:21:54.412] [DEBUG] QUERY OK db=25.8ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "true", "kiosk_active", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401799, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.412] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:25:01Z", "value" => ""} [2026-07-09 13:21:54.447] [DEBUG] QUERY OK db=33.7ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:25:01Z", "sim_operator", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401800, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.448] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.478] [DEBUG] QUERY OK db=29.0ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "UNKNOWN", "sim_number", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401801, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.479] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.503] [DEBUG] QUERY OK db=24.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "UNKNOWN", "sim_iccid", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401802, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.504] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.531] [DEBUG] QUERY OK db=26.1ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "UNKNOWN", "sim_imsi", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401803, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.531] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.556] [DEBUG] QUERY OK db=24.9ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "UNKNOWN", "sim_iccid2", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401804, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.557] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:25:01Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.581] [DEBUG] QUERY OK db=23.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "UNKNOWN", "sim_imsi2", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401805, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.581] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "12"} [2026-07-09 13:21:54.605] [DEBUG] QUERY OK db=23.6ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "12", "data_usage_mb", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401806, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.605] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:25:01Z", "value" => "0"} [2026-07-09 13:21:54.640] [DEBUG] QUERY OK db=33.4ms queue=0.2ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:01Z", "0", "mobile_data_mb", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401807, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.641] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:21:54.659] [DEBUG] QUERY OK db=16.7ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46858, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401808, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:25:01Z", message: nil, status_log_id: 46858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.661] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:21:54.661] [INFO ] Incoming JSON payload: {"oid":"5b9d009e-a9dd-42ae-8669-ea4b9e1fde4a","sn":"98250904730001","uploadTime":"2026-07-09T13:21:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"ram_free_mb","value":"1081","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:21:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:21:54.663] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:21:54.663] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5b9d009e-a9dd-42ae-8669-ea4b9e1fde4a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:21:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:21:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:21:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:21:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "1081"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:21:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:21:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:21:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:21:54Z", "vendor" => "morefun"} [2026-07-09 13:21:54.663] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:21:54.663] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:21:54.663] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:21:54.667] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-09 13:21:54.669] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=4.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-09 13:21:54.669] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:21:54.670] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:21:54.670] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:21:54.676] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:21:54.700] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:21:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:21:54.700] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:21:54.702] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=30.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:21:54.725] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:21:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:21:54.750] [DEBUG] QUERY OK db=24.2ms idle=24.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "5b9d009e-a9dd-42ae-8669-ea4b9e1fde4a", "2026-07-09T13:21:54Z", ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:21:54.751] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46859, oid: "5b9d009e-a9dd-42ae-8669-ea4b9e1fde4a", upload_time: "2026-07-09T13:21:54Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]} [2026-07-09 13:21:54.751] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:21:54Z", "value" => "morefun"} [2026-07-09 13:21:54.771] [DEBUG] QUERY OK db=20.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "morefun", "vendor", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401809, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.771] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:21:54Z", "value" => "kiosk_launcher"} [2026-07-09 13:21:54.806] [DEBUG] QUERY OK db=33.8ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "kiosk_launcher", "model", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401810, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.806] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:21:54Z", "value" => "1.0"} [2026-07-09 13:21:54.831] [DEBUG] QUERY OK db=24.7ms queue=0.1ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "1.0", "app_version", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401811, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.832] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:21:54Z", "value" => "13"} [2026-07-09 13:21:54.855] [DEBUG] QUERY OK db=23.0ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "13", "android_version", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401812, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.855] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "1081"} [2026-07-09 13:21:54.882] [DEBUG] QUERY OK db=26.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "1081", "ram_free_mb", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401813, itemkey: "ram_free_mb", value: "1081", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.883] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:21:54Z", "value" => "WIFI"} [2026-07-09 13:21:54.906] [DEBUG] QUERY OK db=21.2ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "WIFI", "network_type", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401814, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.906] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:21:54Z", "value" => "true"} [2026-07-09 13:21:54.926] [DEBUG] QUERY OK db=19.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "true", "kiosk_active", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401815, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.927] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:21:54Z", "value" => ""} [2026-07-09 13:21:54.950] [DEBUG] QUERY OK db=22.8ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:21:54Z", "sim_operator", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401816, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.951] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"} [2026-07-09 13:21:54.987] [DEBUG] QUERY OK db=35.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "UNKNOWN", "sim_number", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:54.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401817, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:54.988] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"} [2026-07-09 13:21:55.011] [DEBUG] QUERY OK db=22.9ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "UNKNOWN", "sim_iccid", 46859, ~N[2026-07-09 13:21:54], ~N[2026-07-09 13:21:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401818, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:54], updated_at: ~N[2026-07-09 13:21:54]}} [2026-07-09 13:21:55.011] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"} [2026-07-09 13:21:55.027] [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-07-09T13:21:54Z", "UNKNOWN", "sim_imsi", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401819, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.028] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"} [2026-07-09 13:21:55.063] [DEBUG] QUERY OK db=34.9ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "UNKNOWN", "sim_iccid2", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401820, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.064] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:21:54Z", "value" => "UNKNOWN"} [2026-07-09 13:21:55.087] [DEBUG] QUERY OK db=23.0ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "UNKNOWN", "sim_imsi2", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401821, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.088] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "29"} [2026-07-09 13:21:55.114] [DEBUG] QUERY OK db=25.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "29", "data_usage_mb", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401822, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.114] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:21:54Z", "value" => "0"} [2026-07-09 13:21:55.144] [DEBUG] QUERY OK db=29.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21:54Z", "0", "mobile_data_mb", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401823, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.148] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:21:55.183] [DEBUG] QUERY OK db=29.6ms queue=3.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:21: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46859, ~N[2026-07-09 13:21:55], ~N[2026-07-09 13:21:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:21:55.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401824, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:21:54Z", message: nil, status_log_id: 46859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:21:55], updated_at: ~N[2026-07-09 13:21:55]}} [2026-07-09 13:21:55.185] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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:376 [2026-07-09 13:21:55.194] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:22:24.034] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:22:24.034] [INFO ] Incoming JSON payload: {"oid":"c6c696c6-9ecb-4e8f-86f9-2e2dc8ecc75f","sn":"98251226730001","uploadTime":"2026-07-09T21:25:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:25:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:22:24.035] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c6c696c6-9ecb-4e8f-86f9-2e2dc8ecc75f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:25:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:25:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:25:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:25:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:25:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:25:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:25:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:25:31Z", "vendor" => "morefun"} [2026-07-09 13:22:24.035] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:22:24.036] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:22:24.037] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:22:24.038] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=1240.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-07-09 13:22:24.039] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=449.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-07-09 13:22:24.039] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:22:24.040] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:22:24.040] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:22:24.067] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms queue=0.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:22:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:22:24.067] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:22:24.068] [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:697 [2026-07-09 13:22:24.083] [DEBUG] QUERY OK source="tms_terminals" db=14.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:22:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:22:24.101] [DEBUG] QUERY OK db=18.4ms idle=14.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c6c696c6-9ecb-4e8f-86f9-2e2dc8ecc75f", "2026-07-09T21:25:31Z", ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:22:24.102] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46860, oid: "c6c696c6-9ecb-4e8f-86f9-2e2dc8ecc75f", upload_time: "2026-07-09T21:25:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]} [2026-07-09 13:22:24.102] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:25:31Z", "value" => "morefun"} [2026-07-09 13:22:24.130] [DEBUG] QUERY OK db=27.5ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "morefun", "vendor", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401825, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.130] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:25:31Z", "value" => "kiosk_launcher"} [2026-07-09 13:22:24.154] [DEBUG] QUERY OK db=23.3ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "kiosk_launcher", "model", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401826, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.154] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:25:31Z", "value" => "1.0"} [2026-07-09 13:22:24.178] [DEBUG] QUERY OK db=22.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "1.0", "app_version", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401827, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.178] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:25:31Z", "value" => "13"} [2026-07-09 13:22:24.198] [DEBUG] QUERY OK db=18.7ms queue=0.1ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "13", "android_version", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401828, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.198] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "924"} [2026-07-09 13:22:24.224] [DEBUG] QUERY OK db=25.5ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "924", "ram_free_mb", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401829, itemkey: "ram_free_mb", value: "924", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.224] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:25:31Z", "value" => "WIFI"} [2026-07-09 13:22:24.248] [DEBUG] QUERY OK db=23.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "WIFI", "network_type", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401830, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.248] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:25:31Z", "value" => "true"} [2026-07-09 13:22:24.273] [DEBUG] QUERY OK db=23.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "true", "kiosk_active", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401831, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.273] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:25:31Z", "value" => ""} [2026-07-09 13:22:24.293] [DEBUG] QUERY OK db=19.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:25:31Z", "sim_operator", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401832, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.293] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.314] [DEBUG] QUERY OK db=20.7ms queue=0.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "UNKNOWN", "sim_number", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401833, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.315] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.338] [DEBUG] QUERY OK db=22.6ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "UNKNOWN", "sim_iccid", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401834, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.338] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.361] [DEBUG] QUERY OK db=21.9ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "UNKNOWN", "sim_imsi", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401835, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.362] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.382] [DEBUG] QUERY OK db=19.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "UNKNOWN", "sim_iccid2", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401836, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.383] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:25:31Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.402] [DEBUG] QUERY OK db=18.7ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "UNKNOWN", "sim_imsi2", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401837, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.402] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "12"} [2026-07-09 13:22:24.418] [DEBUG] QUERY OK db=15.7ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25:31Z", "12", "data_usage_mb", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401838, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.419] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:25:31Z", "value" => "0"} [2026-07-09 13:22:24.446] [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-07-09T21:25:31Z", "0", "mobile_data_mb", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.446] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401839, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.447] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:22:24.480] [DEBUG] QUERY OK db=32.0ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:25: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46860, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401840, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:25:31Z", message: nil, status_log_id: 46860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.484] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:22:24.489] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:22:24.526] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:22:24.526] [INFO ] Incoming JSON payload: {"oid":"3de5bdc5-bc9f-4a6d-acb5-9919c9b8e6f0","sn":"98250904730001","uploadTime":"2026-07-09T13:22:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"ram_free_mb","value":"1079","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:22:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:22:24.527] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3de5bdc5-bc9f-4a6d-acb5-9919c9b8e6f0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:22:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:22:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:22:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:22:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "1079"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:22:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:22:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:22:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:22:24Z", "vendor" => "morefun"} [2026-07-09 13:22:24.528] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:22:24.528] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:22:24.528] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:22:24.531] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=49.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-07-09 13:22:24.533] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=48.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-07-09 13:22:24.533] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:22:24.535] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:22:24.535] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:22:24.549] [DEBUG] QUERY OK source="tms_terminals" db=13.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:22:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:22:24.549] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:22:24.550] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:22:24.571] [DEBUG] QUERY OK source="tms_terminals" db=21.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:22:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:22:24.594] [DEBUG] QUERY OK db=22.4ms idle=21.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "3de5bdc5-bc9f-4a6d-acb5-9919c9b8e6f0", "2026-07-09T13:22:24Z", ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:22:24.595] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46861, oid: "3de5bdc5-bc9f-4a6d-acb5-9919c9b8e6f0", upload_time: "2026-07-09T13:22:24Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]} [2026-07-09 13:22:24.595] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:22:24Z", "value" => "morefun"} [2026-07-09 13:22:24.624] [DEBUG] QUERY OK db=29.0ms queue=0.1ms idle=3.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "morefun", "vendor", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401841, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.625] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:22:24Z", "value" => "kiosk_launcher"} [2026-07-09 13:22:24.640] [DEBUG] QUERY OK db=15.3ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "kiosk_launcher", "model", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401842, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.641] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:22:24Z", "value" => "1.0"} [2026-07-09 13:22:24.657] [DEBUG] QUERY OK db=16.2ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "1.0", "app_version", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401843, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.657] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:22:24Z", "value" => "13"} [2026-07-09 13:22:24.690] [DEBUG] QUERY OK db=32.0ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "13", "android_version", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401844, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.691] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "1079"} [2026-07-09 13:22:24.714] [DEBUG] QUERY OK db=22.4ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "1079", "ram_free_mb", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401845, itemkey: "ram_free_mb", value: "1079", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.714] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:22:24Z", "value" => "WIFI"} [2026-07-09 13:22:24.738] [DEBUG] QUERY OK db=21.3ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "WIFI", "network_type", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401846, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.739] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:22:24Z", "value" => "true"} [2026-07-09 13:22:24.751] [DEBUG] QUERY OK db=12.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "true", "kiosk_active", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401847, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.752] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:22:24Z", "value" => ""} [2026-07-09 13:22:24.778] [DEBUG] QUERY OK db=26.2ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:22:24Z", "sim_operator", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401848, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.780] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.804] [DEBUG] QUERY OK db=23.3ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "UNKNOWN", "sim_number", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401849, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.805] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.831] [DEBUG] QUERY OK db=25.2ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "UNKNOWN", "sim_iccid", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401850, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.832] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.849] [DEBUG] QUERY OK db=16.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "UNKNOWN", "sim_imsi", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401851, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.849] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.868] [DEBUG] QUERY OK db=18.5ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "UNKNOWN", "sim_iccid2", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401852, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.869] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:22:24Z", "value" => "UNKNOWN"} [2026-07-09 13:22:24.897] [DEBUG] QUERY OK db=27.4ms queue=0.1ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "UNKNOWN", "sim_imsi2", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401853, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.897] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "29"} [2026-07-09 13:22:24.928] [DEBUG] QUERY OK db=30.8ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "29", "data_usage_mb", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401854, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.929] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:22:24Z", "value" => "0"} [2026-07-09 13:22:24.943] [DEBUG] QUERY OK db=13.6ms queue=0.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:24Z", "0", "mobile_data_mb", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401855, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.944] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:22:24.962] [DEBUG] QUERY OK db=16.7ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46861, ~N[2026-07-09 13:22:24], ~N[2026-07-09 13:22:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:24.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401856, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:22:24Z", message: nil, status_log_id: 46861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:24], updated_at: ~N[2026-07-09 13:22:24]}} [2026-07-09 13:22:24.965] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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:376 [2026-07-09 13:22:24.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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:22:54.053] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:22:54.053] [INFO ] Incoming JSON payload: {"oid":"97087f1c-efcd-4b6d-a936-6b22189ee28b","sn":"98251226730001","uploadTime":"2026-07-09T21:26:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:26:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:22:54.054] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "97087f1c-efcd-4b6d-a936-6b22189ee28b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:26:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:26:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:26:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:26:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:26:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:26:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:26:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:26:02Z", "vendor" => "morefun"} [2026-07-09 13:22:54.054] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:22:54.054] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:22:54.055] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:22:54.055] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1214.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-07-09 13:22:54.056] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=381.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-07-09 13:22:54.056] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:22:54.057] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:22:54.057] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:22:54.113] [DEBUG] QUERY OK source="tms_terminals" db=56.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:22:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:22:54.114] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:22:54.115] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=57.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:697 [2026-07-09 13:22:54.138] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:22:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:22:54.174] [DEBUG] QUERY OK db=35.9ms idle=23.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "97087f1c-efcd-4b6d-a936-6b22189ee28b", "2026-07-09T21:26:02Z", ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:22:54.174] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46862, oid: "97087f1c-efcd-4b6d-a936-6b22189ee28b", upload_time: "2026-07-09T21:26:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]} [2026-07-09 13:22:54.175] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:26:02Z", "value" => "morefun"} [2026-07-09 13:22:54.202] [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-07-09T21:26:02Z", "morefun", "vendor", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401857, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.204] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:26:02Z", "value" => "kiosk_launcher"} [2026-07-09 13:22:54.238] [DEBUG] QUERY OK db=32.8ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "kiosk_launcher", "model", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401858, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.239] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:26:02Z", "value" => "1.0"} [2026-07-09 13:22:54.292] [DEBUG] QUERY OK db=53.4ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "1.0", "app_version", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401859, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.293] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:26:02Z", "value" => "13"} [2026-07-09 13:22:54.373] [DEBUG] QUERY OK db=80.3ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "13", "android_version", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401860, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.374] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "930"} [2026-07-09 13:22:54.400] [DEBUG] QUERY OK db=24.8ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "930", "ram_free_mb", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401861, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.400] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:26:02Z", "value" => "WIFI"} [2026-07-09 13:22:54.425] [DEBUG] QUERY OK db=24.2ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "WIFI", "network_type", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401862, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.426] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:26:02Z", "value" => "true"} [2026-07-09 13:22:54.450] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "true", "kiosk_active", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401863, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.451] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:26:02Z", "value" => ""} [2026-07-09 13:22:54.481] [DEBUG] QUERY OK db=29.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:26:02Z", "sim_operator", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401864, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.481] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"} [2026-07-09 13:22:54.505] [DEBUG] QUERY OK db=22.9ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "UNKNOWN", "sim_number", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401865, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.505] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"} [2026-07-09 13:22:54.534] [DEBUG] QUERY OK db=27.5ms queue=0.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "UNKNOWN", "sim_iccid", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401866, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"} [2026-07-09 13:22:54.558] [DEBUG] QUERY OK db=23.0ms queue=0.2ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "UNKNOWN", "sim_imsi", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401867, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.558] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"} [2026-07-09 13:22:54.575] [DEBUG] QUERY OK db=15.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "UNKNOWN", "sim_iccid2", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401868, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.575] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:26:02Z", "value" => "UNKNOWN"} [2026-07-09 13:22:54.603] [DEBUG] QUERY OK db=27.9ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "UNKNOWN", "sim_imsi2", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401869, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.604] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "12"} [2026-07-09 13:22:54.648] [DEBUG] QUERY OK db=43.3ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "12", "data_usage_mb", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401870, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.650] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:26:02Z", "value" => "0"} [2026-07-09 13:22:54.692] [DEBUG] QUERY OK db=41.6ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:02Z", "0", "mobile_data_mb", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401871, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.693] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:22:54.718] [DEBUG] QUERY OK db=23.1ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46862, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401872, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:26:02Z", message: nil, status_log_id: 46862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.719] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:22:54.719] [INFO ] Incoming JSON payload: {"oid":"a2ba8b3b-26b8-4452-aeaa-c9f4cfc3ff28","sn":"98250904730001","uploadTime":"2026-07-09T13:22:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"ram_free_mb","value":"1083","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:22:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:22:54.721] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a2ba8b3b-26b8-4452-aeaa-c9f4cfc3ff28", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:22:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:22:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:22:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:22:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "1083"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:22:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:22:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:22:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:22:54Z", "vendor" => "morefun"} [2026-07-09 13:22:54.723] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:22:54.721] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:22:54.724] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:22:54.724] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:22:54.726] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=6.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-07-09 13:22:54.729] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=2.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-07-09 13:22:54.729] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:22:54.731] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:22:54.731] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:22:54.736] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:22:54.769] [DEBUG] QUERY OK source="tms_terminals" db=34.3ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:22:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:22:54.770] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:22:54.771] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:22:54.783] [DEBUG] QUERY OK source="tms_terminals" db=11.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:22:54], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:22:54.804] [DEBUG] QUERY OK db=20.7ms idle=11.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "a2ba8b3b-26b8-4452-aeaa-c9f4cfc3ff28", "2026-07-09T13:22:54Z", ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:22:54.804] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46863, oid: "a2ba8b3b-26b8-4452-aeaa-c9f4cfc3ff28", upload_time: "2026-07-09T13:22:54Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]} [2026-07-09 13:22:54.804] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:22:54Z", "value" => "morefun"} [2026-07-09 13:22:54.829] [DEBUG] QUERY OK db=23.1ms queue=0.2ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "morefun", "vendor", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401873, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.829] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:22:54Z", "value" => "kiosk_launcher"} [2026-07-09 13:22:54.853] [DEBUG] QUERY OK db=23.2ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "kiosk_launcher", "model", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401874, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.853] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:22:54Z", "value" => "1.0"} [2026-07-09 13:22:54.877] [DEBUG] QUERY OK db=22.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "1.0", "app_version", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401875, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.877] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:22:54Z", "value" => "13"} [2026-07-09 13:22:54.897] [DEBUG] QUERY OK db=19.8ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "13", "android_version", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401876, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.898] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "1083"} [2026-07-09 13:22:54.921] [DEBUG] QUERY OK db=23.0ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "1083", "ram_free_mb", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401877, itemkey: "ram_free_mb", value: "1083", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.921] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:22:54Z", "value" => "WIFI"} [2026-07-09 13:22:54.945] [DEBUG] QUERY OK db=23.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "WIFI", "network_type", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401878, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.946] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:22:54Z", "value" => "true"} [2026-07-09 13:22:54.979] [DEBUG] QUERY OK db=32.7ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "true", "kiosk_active", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:54.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401879, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:54.979] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:22:54Z", "value" => ""} [2026-07-09 13:22:55.003] [DEBUG] QUERY OK db=23.3ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:22:54Z", "sim_operator", 46863, ~N[2026-07-09 13:22:54], ~N[2026-07-09 13:22:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401880, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:54], updated_at: ~N[2026-07-09 13:22:54]}} [2026-07-09 13:22:55.004] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"} [2026-07-09 13:22:55.021] [DEBUG] QUERY OK db=16.8ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "UNKNOWN", "sim_number", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401881, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.022] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"} [2026-07-09 13:22:55.059] [DEBUG] QUERY OK db=36.7ms queue=0.4ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "UNKNOWN", "sim_iccid", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401882, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.059] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"} [2026-07-09 13:22:55.084] [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-07-09T13:22:54Z", "UNKNOWN", "sim_imsi", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401883, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.084] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"} [2026-07-09 13:22:55.120] [DEBUG] QUERY OK db=35.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "UNKNOWN", "sim_iccid2", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401884, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.120] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:22:54Z", "value" => "UNKNOWN"} [2026-07-09 13:22:55.138] [DEBUG] QUERY OK db=16.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "UNKNOWN", "sim_imsi2", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401885, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.138] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "29"} [2026-07-09 13:22:55.171] [DEBUG] QUERY OK db=29.8ms queue=3.1ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "29", "data_usage_mb", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401886, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.172] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:22:54Z", "value" => "0"} [2026-07-09 13:22:55.196] [DEBUG] QUERY OK db=23.2ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22:54Z", "0", "mobile_data_mb", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401887, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.196] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:22:55.235] [DEBUG] QUERY OK db=34.2ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:22: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46863, ~N[2026-07-09 13:22:55], ~N[2026-07-09 13:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:22:55.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401888, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:22:54Z", message: nil, status_log_id: 46863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:22:55], updated_at: ~N[2026-07-09 13:22:55]}} [2026-07-09 13:22:55.239] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=42.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:376 [2026-07-09 13:22:55.254] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:23:24.127] [INFO ] Received status update for terminal 98251226730001 [2026-07-09 13:23:24.127] [INFO ] Incoming JSON payload: {"oid":"a37257c7-efa9-4338-9c92-bb0d8b0b69bd","sn":"98251226730001","uploadTime":"2026-07-09T21:26:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"data_usage_mb","value":"12","timestamp":"2026-07-09T21:26:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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-07-09 13:23:24.129] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a37257c7-efa9-4338-9c92-bb0d8b0b69bd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:26:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T21:26:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:26:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:26:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:26:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:26:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:26:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "12"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09T21:26:32Z", "vendor" => "morefun"} [2026-07-09 13:23:24.131] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:23:24.132] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-09 13:23:24.132] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:23:24.133] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=351.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-07-09 13:23:24.133] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=65.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-07-09 13:23:24.133] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:23:24.135] [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.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:23:24.136] [INFO ] Terminal updated: 98251226730001 [2026-07-09 13:23:24.168] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:23:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:23:24.168] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-07-09 13:23:24.169] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:23:24.245] [DEBUG] QUERY OK source="tms_terminals" db=76.1ms queue=0.1ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:23:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:23:24.269] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=76.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a37257c7-efa9-4338-9c92-bb0d8b0b69bd", "2026-07-09T21:26:32Z", ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:23:24.269] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46864, oid: "a37257c7-efa9-4338-9c92-bb0d8b0b69bd", upload_time: "2026-07-09T21:26:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]} [2026-07-09 13:23:24.269] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T21:26:32Z", "value" => "morefun"} [2026-07-09 13:23:24.299] [DEBUG] QUERY OK db=29.5ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "morefun", "vendor", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401889, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.300] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T21:26:32Z", "value" => "kiosk_launcher"} [2026-07-09 13:23:24.333] [DEBUG] QUERY OK db=33.2ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "kiosk_launcher", "model", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401890, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.334] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T21:26:32Z", "value" => "1.0"} [2026-07-09 13:23:24.348] [DEBUG] QUERY OK db=13.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "1.0", "app_version", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401891, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.348] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T21:26:32Z", "value" => "13"} [2026-07-09 13:23:24.371] [DEBUG] QUERY OK db=22.9ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "13", "android_version", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401892, itemkey: "android_version", value: "13", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.372] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "925"} [2026-07-09 13:23:24.397] [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-07-09T21:26:32Z", "925", "ram_free_mb", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401893, itemkey: "ram_free_mb", value: "925", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.397] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T21:26:32Z", "value" => "WIFI"} [2026-07-09 13:23:24.424] [DEBUG] QUERY OK db=26.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "WIFI", "network_type", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401894, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.425] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T21:26:32Z", "value" => "true"} [2026-07-09 13:23:24.461] [DEBUG] QUERY OK db=33.6ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "true", "kiosk_active", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401895, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.462] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T21:26:32Z", "value" => ""} [2026-07-09 13:23:24.474] [DEBUG] QUERY OK db=11.9ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T21:26:32Z", "sim_operator", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401896, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.474] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"} [2026-07-09 13:23:24.510] [DEBUG] QUERY OK db=33.2ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "UNKNOWN", "sim_number", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401897, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"} [2026-07-09 13:23:24.536] [DEBUG] QUERY OK db=26.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "UNKNOWN", "sim_iccid", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401898, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.538] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"} [2026-07-09 13:23:24.571] [DEBUG] QUERY OK db=32.6ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "UNKNOWN", "sim_imsi", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401899, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.571] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"} [2026-07-09 13:23:24.597] [DEBUG] QUERY OK db=22.3ms queue=3.3ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "UNKNOWN", "sim_iccid2", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401900, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.598] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T21:26:32Z", "value" => "UNKNOWN"} [2026-07-09 13:23:24.626] [DEBUG] QUERY OK db=28.2ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "UNKNOWN", "sim_imsi2", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401901, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.627] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "12"} [2026-07-09 13:23:24.654] [DEBUG] QUERY OK db=26.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "12", "data_usage_mb", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401902, itemkey: "data_usage_mb", value: "12", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.654] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T21:26:32Z", "value" => "0"} [2026-07-09 13:23:24.686] [DEBUG] QUERY OK db=31.3ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26:32Z", "0", "mobile_data_mb", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401903, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.687] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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-07-09 13:23:24.711] [DEBUG] QUERY OK db=23.2ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T21:26: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), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.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", 46864, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401904, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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-07-09T21:26:32Z", message: nil, status_log_id: 46864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.713] [DEBUG] QUERY OK source="tms_terminals" db=0.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:23:24.718] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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-07-09 13:23:24.722] [INFO ] Received status update for terminal 98250904730001 [2026-07-09 13:23:24.722] [INFO ] Incoming JSON payload: {"oid":"948a8ac7-8c1f-4f9a-9b3f-987ccd1a1d37","sn":"98250904730001","uploadTime":"2026-07-09T13:23:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"ram_free_mb","value":"1085","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"data_usage_mb","value":"29","timestamp":"2026-07-09T13:23:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-09T13:23: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (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.resources.overlay (com.android.wifi.mainline.resources.overlay), com.android.wifi.resources.overlay (c (truncated) [2026-07-09 13:23:24.724] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "948a8ac7-8c1f-4f9a-9b3f-987ccd1a1d37", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:23:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-09T13:23:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:23:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:23:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "1085"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:23:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:23:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:23:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "29"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:23: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...}], "sn" => "98250904730001", "uploadTime" => "2026-07-09T13:23:24Z", "vendor" => "morefun"} [2026-07-09 13:23:24.724] [INFO ] Extracted versions for 98250904730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-09 13:23:24.724] [INFO ] Detected missing versions for 98250904730001, triggering auto-push [2026-07-09 13:23:24.724] [INFO ] AutoPushService: Triggering auto-push for 98250904730001 (morefun kiosk_launcher) - missing version [2026-07-09 13:23:24.726] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=14.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-07-09 13:23:24.727] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=13.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-07-09 13:23:24.727] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-09 13:23:24.730] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=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 WHERE (t0.`serial_number` = ?) ["98250904730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-09 13:23:24.730] [INFO ] Terminal updated: 98250904730001 [2026-07-09 13:23:24.751] [DEBUG] QUERY OK source="tms_terminals" db=20.4ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-09 13:23:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-09 13:23:24.751] [DEBUG] VersionComplianceChecker: 98250904730001 — all versions compliant [2026-07-09 13:23:24.752] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=21.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` = ?) ["98250904730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-09 13:23:24.786] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-09 13:23:24], 23] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-09 13:23:24.811] [DEBUG] QUERY OK db=24.0ms idle=3.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [23, "948a8ac7-8c1f-4f9a-9b3f-987ccd1a1d37", "2026-07-09T13:23:24Z", ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-09 13:23:24.811] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 46865, oid: "948a8ac7-8c1f-4f9a-9b3f-987ccd1a1d37", upload_time: "2026-07-09T13:23:24Z", terminal_id: 23, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]} [2026-07-09 13:23:24.811] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-09T13:23:24Z", "value" => "morefun"} [2026-07-09 13:23:24.835] [DEBUG] QUERY OK db=23.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "morefun", "vendor", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401905, itemkey: "vendor", value: "morefun", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.836] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-09T13:23:24Z", "value" => "kiosk_launcher"} [2026-07-09 13:23:24.861] [DEBUG] QUERY OK db=24.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "kiosk_launcher", "model", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401906, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.862] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-09T13:23:24Z", "value" => "1.0"} [2026-07-09 13:23:24.885] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "1.0", "app_version", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401907, itemkey: "app_version", value: "1.0", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.885] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-09T13:23:24Z", "value" => "13"} [2026-07-09 13:23:24.913] [DEBUG] QUERY OK db=27.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "13", "android_version", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401908, itemkey: "android_version", value: "13", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.914] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "1085"} [2026-07-09 13:23:24.947] [DEBUG] QUERY OK db=32.7ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "1085", "ram_free_mb", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401909, itemkey: "ram_free_mb", value: "1085", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.949] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-09T13:23:24Z", "value" => "WIFI"} [2026-07-09 13:23:24.974] [DEBUG] QUERY OK db=24.7ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "WIFI", "network_type", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401910, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.975] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-09T13:23:24Z", "value" => "true"} [2026-07-09 13:23:24.996] [DEBUG] QUERY OK db=20.0ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "true", "kiosk_active", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:24.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401911, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:24.996] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-09T13:23:24Z", "value" => ""} [2026-07-09 13:23:25.035] [DEBUG] QUERY OK db=38.9ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-09T13:23:24Z", "sim_operator", 46865, ~N[2026-07-09 13:23:24], ~N[2026-07-09 13:23:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401912, itemkey: "sim_operator", value: nil, timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:24], updated_at: ~N[2026-07-09 13:23:24]}} [2026-07-09 13:23:25.036] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"} [2026-07-09 13:23:25.071] [DEBUG] QUERY OK db=33.5ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "UNKNOWN", "sim_number", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401913, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.071] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"} [2026-07-09 13:23:25.097] [DEBUG] QUERY OK db=25.4ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "UNKNOWN", "sim_iccid", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401914, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.097] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"} [2026-07-09 13:23:25.122] [DEBUG] QUERY OK db=22.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "UNKNOWN", "sim_imsi", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401915, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.122] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"} [2026-07-09 13:23:25.147] [DEBUG] QUERY OK db=23.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "UNKNOWN", "sim_iccid2", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401916, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.148] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-09T13:23:24Z", "value" => "UNKNOWN"} [2026-07-09 13:23:25.182] [DEBUG] QUERY OK db=33.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "UNKNOWN", "sim_imsi2", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401917, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.182] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "29"} [2026-07-09 13:23:25.210] [DEBUG] QUERY OK db=27.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "29", "data_usage_mb", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401918, itemkey: "data_usage_mb", value: "29", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.210] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-09T13:23:24Z", "value" => "0"} [2026-07-09 13:23:25.235] [DEBUG] QUERY OK db=23.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23:24Z", "0", "mobile_data_mb", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401919, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.236] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-09T13:23: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ...} [2026-07-09 13:23:25.274] [DEBUG] QUERY OK db=32.2ms queue=3.5ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-09T13:23: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), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., "installed_apps", 46865, ~N[2026-07-09 13:23:25], ~N[2026-07-09 13:23:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-09 13:23:25.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 401920, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Chrome (com.android.chrome), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Entry2Exit (com.faizie2e.entry2exit.client), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fortis POS (world.fortis.pos), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.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), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.mor" <> ..., timestamp: "2026-07-09T13:23:24Z", message: nil, status_log_id: 46865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-09 13:23:25], updated_at: ~N[2026-07-09 13:23:25]}} [2026-07-09 13:23:25.276] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-09 13:23:25.288] [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-06-25 16:38:02]}, %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-26 16:48:36]}, %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)